在Ant构建脚本中设置Class-Path

时间:2012-10-12 12:17:32

标签: java ant build classpath

我正在尝试构建我的控制台应用程序,并且我正在使用Ant来构建它。我可以在Eclipse中运行我的应用程序,但是当我尝试从我得到的jar运行它时 - 抛出ClassNotFoundException :.是在我的应用程序中使用的一个罐子里。这是我创建清单的build.xml的一部分:

<manifest>
      <attribute name="Main-Class" value="com.package.Reporter" />
      <attribute name="Class-Path" value="lib/commons-httpclient-3.1.jar
        lib/commons-logging-api.jar
        ...lot of jars...
        lib/stax-api-1.0.1.jar" />
</manifest>

所需的类在commons-httpclient-3.1.jar中 以下是我如何设置类路径进行编译,这很好:

<path id="libs.dir">
    <fileset dir="lib" includes="**/*.jar"/>
</path>

UPD :我应该把带有libs的罐装到我的罐子里吗?现在我把它们放到我的jar的“lib”目录中。所以myjar.jar包含我的类,META-INF目录和lib目录的包。

3 个答案:

答案 0 :(得分:0)

尝试改变这样的路径。

 <path id="libs.dir">
   <fileset dir="./lib" includes="**/*.jar"/>
 </path>

答案 1 :(得分:0)

您需要manifestclasspath任务。

示例:

答案 2 :(得分:0)

Max,假设正常使用,你不能将jar库插入jar。您可以不必在运行时手动指定它们,就像Romski建议的那样。调用java -jar myjar.jar时,它应该找到它们位于lib目录中的所有罐子。 lib目录必须位于jar所在的目录中。如果直接或通过ant java任务调用java可执行文件,则无关紧要。

请注意,当前目录只与jar和lib之间的关系无关。

现在过于明确。按如下方式执行完整性测试:创建一个新的tmp目录并将文件复制到其中:

tmp/myjar.jar
tmp/lib/commons-httpclient-3.1.jar

运行java -jar tmp/myjar.jar

编辑:现在我看到我刚刚写了Oracle jar tutorial中的内容。但我也用相对目录自己做了测试。我还看到几十个stackoverflow问题在jar 中搜索 jar,所以请先搜索SO,然后再询问。