在使用Ant构建的新jar文件中包含外部jar文件
在使用Ant构建的新jar文件中包含外部jar文件
我刚刚“继承”了一个Java项目,但由于没有Java背景,有时候会有点迷茫。开发过程中使用Eclipse进行调试和运行应用程序。我已经通过Eclipse成功创建了一个包含所有所需外部jar文件(如Log4J、xmlrpc-server等)的.jar文件。可以使用以下命令成功运行这个大的.jar文件:
java -jar myjar.jar
我的下一步是使用Ant(版本1.7.1)自动构建,这样就不必依赖Eclipse进行构建和部署。由于我对Java知识的缺乏,这证明是一个挑战。项目的根目录如下所示:
|-> jars(外部jar包的位置) |-> java | |-> bin(存放完成的.class / .jar文件的位置) | |-> src(代码所在位置) | |-> ++一些文件,如build.xml等 |-> sql(你猜对了;SQL!)
我的build.xml包含以下内容:
basedir="${build.dir}" manifest="${manifest.file}">
然后运行:
ant clean build-jar
一个名为seraph.jar的文件将被放置在java/bin/jar目录中。然后我尝试使用以下命令运行这个jar:
java -jar bin/jar/seraph.jar
控制台输出结果如下:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger at no.easyconnect.seraph.core.SeraphCore.(SeraphCore.java:23) 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) ... 1 more Could not find the main class: no.easyconnect.seraph.core.SeraphCore. Program will exit.
我怀疑我在build.xml文件中做了一些非常愚蠢的事情,并且已经花了两天时间尝试各种配置的变化,但都没有成功。非常感谢任何能帮助我使其工作的帮助。
哦,如果我遗漏了一些关键信息,我很抱歉。这是我第一次在这里发帖。