2013-05-08 114 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

相關問題