在使用Ant构建的新jar文件中包含外部jar文件

11 浏览
0 Comments

在使用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文件中做了一些非常愚蠢的事情,并且已经花了两天时间尝试各种配置的变化,但都没有成功。非常感谢任何能帮助我使其工作的帮助。

哦,如果我遗漏了一些关键信息,我很抱歉。这是我第一次在这里发帖。

0