使用ant构建文件创建jar的问题

时间:2013-06-26 10:26:04

标签: java eclipse ant build jar

在我的工作场所,我有一个Eclipse Java项目,它将作为JAR使用build.xml文件导出。

jar已成功写入硬盘,但我发现为了使其工作,我必须将jar的所有内容提取到jar所在的文件夹,然后双击它让它运行。

前:

Jar的位置:C:\ MyTestFolder \ App.jar

我必须将所有内容解压缩到C:\ MyTestFolder,然后双击JAR以使其成​​功运行。

否则,在直接双击罐子时,没有任何反应。

当我从命令提示符调用jar时,我收到以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/log4j/Logger


        at application.MainView.<init>(MainView.java:49)
        at application.MainView$1.run(MainView.java:65)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        ... 14 more

尽管在类路径上有log4j(在MANIFEST.MF文件中),但仍存在此错误。 我想知道同样的决议。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

看起来jar无法在类路径中找到依赖的jar。

您需要在主jar的Manifest文件中添加所有相关jar文件的路径。

之后,您将能够在不提取内容的情况下运行jar文件。