使用Ant使用log4j运行任务有问题

时间:2010-10-07 12:38:51

标签: java ant log4j

我的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?

2 个答案:

答案 0 :(得分:1)

您可能无意中从org.apache.commons.logging导入了一个类,现在,正如您所料,JVM期望在运行时在类路径中找到类定义。

我建议在代码中查找commons-logging软件包的用法。

答案 1 :(得分:0)

您必须在类路径中添加apache commons logging。包org.apache.commons.logging不是log4j的一部分。