我的java应用程序使用log4j进行日志记录。使用ant,项目构建成功,但我无法运行它。我得到的错误是
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/Log
.........
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
我的classpath包含log4j jar。
[echo] ..../apache-log4j-1.2.15/log4j-1.2.15.jar: .....
我的蚂蚁版本是1.7.1。我错过了什么?
[编辑] 我的应用程序正在引用另一个需要公共记录jar的项目。所以我尝试创建一个引用项目的可执行jar,以便继承所有依赖项。创建可执行jar的ant任务如下:
<target name="executablejar" depends="compile">
<delete file="${dist}/app.jar" />
<javac debug="true" srcdir="${src}" destdir="${classes}" classpath="${javac.classpath}"/>
<copy todir="classes" flatten="true">
<path>
<pathelement path="${javac.classpath}"/>
</path>
</copy>
<jar jarfile="${dist}/app.jar" basedir="${classes}" />
</target>
然而,错误仍然存在。我是否正确创建了可执行jar?
答案 0 :(得分:1)
您可能无意中从org.apache.commons.logging
导入了一个类,现在,正如您所料,JVM期望在运行时在类路径中找到类定义。
我建议在代码中查找commons-logging软件包的用法。
答案 1 :(得分:0)
您必须在类路径中添加apache commons logging。包org.apache.commons.logging
不是log4j的一部分。