0
我尝试从蚂蚁我的应用程序,该应用程序使用log4j的JAR 我现在有这个Ant任务:蚂蚁运行任务:【JAVA] java.lang.NoClassDefFoundError:组织/阿帕奇/ log4j的/记录器
<property name="main-class" value="com.controller.core.Controller"/>
<target name="dist"
description="generate the distribution" >
<jar jarfile="${dist}/lib/controller.jar" basedir="${build}">
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
</manifest>
</jar>
</target>
<path id="class.path">
<fileset dir="..\lib">
<include name="**/*.jar" />
</fileset>
</path>
<target name="run">
<java jar="${dist}/lib/controller.jar" fork="true" >
<classpath refid="class.path" />
<classpath>
<path location="../lib/misc"/>
</classpath>
</java>
</target>
或我甚至把它完整的路径,但仍是同样的错误
<target name="run">
<java jar="${dist}/lib/controller.jar" fork="true" >
<classpath>
<path refid="test.classpath"/>
<path location="d:\dev\svn\trunk\lib\misc\log4j.jar"/>
</classpath>
</java>
</target>
其中log4j的是在../lib/misc路径。 但还是即时收到此错误:
run:
[java] java.lang.NoClassDefFoundError: org/apache/log4j/Logger
[java] at com.controller.core.Controller.<clinit>(Unknown Source)
[java] Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
[java] ... 1 more
[java] Exception in thread "main"
[java] Java Result: 1
现在,当我与-v标志运行ant它给了我这个消息:
[java] When using 'jar' attribute classpath-settings are ignored. See the manual for more information.
[java] Executing 'c:\Program Files (x86)\Java\jdk1.7.0_05\jre\bin\java.exe' with arguments:
[java] '-classpath'
[java] 'd:\dev\svn\trunk\lib\misc\log4j.jar'
[java] '-jar'
[java] 'D:\dev\svn\trunk\controller\dist\lib\controller.jar'
什么我错过这里?
您的元素不嵌套在任务下。它应该看起来像: –
2013-02-15 15:05:04
我修复了这个问题,但同样的错误 – user63898 2013-02-15 15:21:56
我相信你必须使用Ant的-lib命令行选项来指定log4j库:ant run -lib d:\ dev \ svn \ trunk \ lib \ misc \ log4j.jar。请参阅http://ant.apache.org/faq.html#delegating-classloader。 – 2013-02-15 15:33:33