2013-05-08 84 views
1

我有'test.jar'。我想创建'my.jar'。我想my.jar包括Test.jar的如何通过Ant包含另一个jar文件?

我的代码:

<target name="jar" > 
    <copy file="${conf.dir}/default.xml" todir="${build.classes}" /> 
    <jar jarfile="${build.dir}/test.jar" basedir="${build.classes}"> 
    <manifest> 
    </manifest> 
    </jar> 
</target> 

<target name="services-jar"> 
    <jar jarfile="${build.dir}/my.jar"> 
     <manifest> 
      <attribute name="Main-Class" value="mypackage.MyClass" /> 
      <attribute name="Class-Path" value="${build.dir}/test.jar" /> 
     </manifest> 
    </jar> 
</target> 

如果我跑 'my.jar':java -jar my.jar 显示消息:Could not find or load main class mypackage.MyClass

MANIFEST.MF文件

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.4 
Created-By: 1.7.0_17-b02 (Oracle Corporation) 
Main-Class: mypackage.MyClass 
Class-Path: ./build/test.jar 

任何想法?

回答

1

清单Class-Path中的路径需要相对于包含清单的JAR文件的位置。由于两个my.jartest.jar是在同一个目录(${build.dir})的相对路径简直是test.jar,即你需要

<jar jarfile="${build.dir}/my.jar"> 
    <manifest> 
     <attribute name="Main-Class" value="mypackage.MyClass" /> 
     <attribute name="Class-Path" value="test.jar" /> 
    </manifest> 
</jar> 

更一般地,你不妨留意一下了<manifestclasspath>任务,给出的目标位置JAR文件和一组其他JAR文件,它们将为您计算所有相对路径并为清单属性生成正确的值。

0

您正在混合分隔符。将您的"${build.dir}\test.jar"替换为"${build.dir}/test.jar"

+0

好吧,我换了,但是同样的消息出现了。 – cguzel 2013-05-08 11:33:00

相关问题