java - 运行其他 jar 文件时,Ant buildfile 无法将 jar 文件放入类路径中

标签 java ant jar classpath

我是 Ant 构建文件的新手,我已经设法设置我的构建文件来创建我的构建目录结构,编译我的所有文件,并将它们打包到一个带有正确指定主类的 list 的 jar 中。

但是,我也试图将运行我刚刚创建的 jar 的能力放入构建文件中。它会尝试运行,但我遇到了这个错误:

run:
 [java] Exception in thread "main" java.lang.NoClassDefFoundError: edu/course/lab/pkg3/Lab31

 [java]     at edu.school.oad.lab.pkg1.Main.<init>(Unknown Source)
 [java]     at edu.school.oad.lab.pkg1.Main.main(Unknown Source)
 [java] Caused by: java.lang.ClassNotFoundException: edu.course.antlab.pkg3.Lab31
 [java]     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
 [java]     at java.security.AccessController.doPrivileged(Native Method)
 [java]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 [java]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

 [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 [java]     ... 2 more
 [java] Java Result: 1

所以我知道这意味着当我尝试运行 jar 文件时,jar 文件的结构正确并且 list 设置正确,但它找不到类 Lab31,因为它不包含在特定的 jar 文件中。相反,它包含在我的库文件夹 ./lib/中的另一个 jar 文件中。我尝试使用与为实际编译设置类路径相同的方法来设置运行 jar 文件的类路径,但这似乎不起作用。

这是构建文件的运行部分:

<target name="run" depends="init, prepare">
    <java jar="${build}/jar/AntLabRun.jar" fork="true">
       <classpath>
          <pathelement location="${lib}/resources.jar" /> 
       </classpath>
    </java>
</target>

我唯一的想法是 jar 文件认为 resources.jar 文件位于 ${build}/jar/${lib}/resources.jar 而不是 ${lib}/resources.jar,但是如果是这种情况,我仍然不确定如何解决它。谁能提供一些指导?

最佳答案

java 任务的行为可能与 java 命令行相同。当同时提供 jar 和 classpath 选项时,类路径将被忽略,而 jar 应该包含一个 list ,列出所需的库。我建议删除 jar 属性,将两个 jar 指定为类路径元素,并将 classname 属性添加到具有主类名称的 java 任务。

关于java - 运行其他 jar 文件时,Ant buildfile 无法将 jar 文件放入类路径中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5136962/

相关文章:

java - glassfish 3 错误 404

java - ANT:将字符串拆分为多个参数

java - 在 netbeans 中构建项目时 Ivy 错误

java - 导入 Ant 构建脚本时获取 xerces 类的 ClassCastException

android - 将第 3 方 Android JAR 集成到 Titanium Mobile 应用程序中?

java - Swing 应用程序的复杂日历

java - 最终的 war 文件中引用了不正确的类

java - 条件 Java 编译

java - 如何找到 hadoop 数据集中的所有键组合?

java - androidPlot黑边