我的旧笔记本电脑出现故障,所以我将一个java程序转移到一台新计算机上,但是执行该程序时遇到了困难。我正在使用eclipse,并且为了删除“缺少主类”错误,将目标目录添加到构建路径中。现在,我收到了错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at source.Application.<clinit>(Application.java:447)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
at java.net.URLClassLoader$1.run(Unknown Source)
...
类路径文件包含行
classpathentry kind="lib" path=".../log4j/log4j-1.2.17/apache-log4j-1.2.17/log4j-1.2.17.jar" sourcepath=".../log4j/log4j-1.2.17/apache-log4j-1.2.17/log4j-1.2.17-sources.jar">
所以,我不确定下一步该尝试什么。
在java build path / libraries选项卡中,条目为:
外部jar:C:\ Users \ John \ Documents \ java \ log4j \ log4j-1.2.17 \ apache-log4j-1.2.17 \ log4j-1.2.17.jar 源附件:C:\ Users \ John \ Documents \ java \ log4j \ log4j-1.2.17 \ apache-log4j-1.2.17 \ log4j-1.2.17-sources.jar javadoc位置:C:\ Users \ John \ Documents \ java \ log4j \ log4j-1.2.17 \ apache-log4j-1.2.17 \ log4j-1.2.17-javadoc.jar
主类有一个类成员
private static final Logger LOGGER = Logger.getLogger(Application.class);
主要功能有行
PropertyConfigurator.configure( “log4j.properties”); LOGGER.error(E);
答案 0 :(得分:2)
classpathentry有三个点。尝试两个点
答案 1 :(得分:0)
首先,我在不同的驱动器上创建了一个新的eclipse工作区,并将java源文件目录复制到新的工作区和必要的库中。程序在新工作区中执行。
由于从传输的svn存储库中检出了流行的工作空间,我转到上一个eclipse工作空间目录并删除了.metadata目录,并使用之前的工作空间重新启动了eclipse。 Eclipse重建了.metadata目录,并允许以前的工作区运行。
因此,看起来错误是一个损坏的eclipse工作区,在计算机之间传输svn存储库后变得明显。