2010-05-16 134 views
2

我使用下面的Ant腳本錯誤運行Java的罐子命令

<manifestclasspath property="jar.classpath" jarfile="${bin.dir}/${jar.app.name}" maxparentlevels="0"> 
    <classpath refid="main.class.path" /> 
</manifestclasspath> 
<target name="jar"> 
    <mkdir dir="${build.dir}/lib/isp"/> 
    <mkdir dir="${build.dir}/lib/jasper"/> 
    <copy todir="${build.dir}/lib/jasper"> 
      <fileset dir="${lib.jasper.dir}"> 
        <include name="**/*.jar" /> 
      </fileset> 
    </copy> 
    <copy todir="${build.dir}/lib/isp"> 
      <fileset dir="${lib.isp.dir}"> 
        <include name="**/*.jar" /> 
      </fileset> 
    </copy> 
    <jar jarfile="${bin.dir}/${jar.app.name}" 
      index="true" 
      basedir="${classes.dir}" excludes="lib/mytest.jar " 
      > 
      <manifest> 
        <attribute name="Main-Class" value="${main.class}" /> 
        <attribute name="Class-Path" value="${jar.classpath}" /> 
      </manifest> 
    </jar> 
</target> 

產生的jar文件有以下MANIFEST.MF輸入來創建一個jar文件。

Main-Class: dm.jb.Main 
Class-Path: lib/isp/OfficeLnFs_2.2.jar lib/isp/RXTXcomm.jar lib/isp/ba 
rbecue-1.0.6d.jar lib/isp/commons-logging-1.1.jar lib/isp/forms-1.0.5 
.jar lib/isp/gnujaxp.jar lib/isp/helpUI.jar lib/isp/inspInstaller.jar 
lib/isp/itext-2.0.1.jar lib/isp/itext-2.0.2.jar lib/isp/jcalendar-1. 
3.2.jar lib/isp/jcl.jar lib/isp/jcommon-1.0.10.jar lib/isp/jcommon-1. 
0.9.jar lib/isp/jdnc-0_7-all.jar lib/isp/jdnc-runner.jar lib/isp/jdom 
.jar lib/isp/jfreechart-1.0.6.jar lib/isp/jlfgr-1_0.jar lib/isp/junit 
.jar lib/isp/log4j-1.2.9.jar lib/isp/looks-1.3.2.jar lib/isp/msbase.j 
ar lib/isp/mssqlserver.jar lib/isp/msutil.jar lib/isp/mysql-connector 

當我嘗試運行命令 java -jar mytest.jar,它失敗並引發錯誤說dm.jb.Main沒有找到。但我可以通過指定的類路徑的java -classpath dm.jb.Main

請幫我 DM

回答

1

如果你運行你的罐子這樣

java -jar <your jar name> 

那麼Java會忽略所有運行的類您給出的classpath參數,並嘗試使用清單中的給定classpath查找它的資源。但是這些pathes指向你的本地文件系統,而不是在jar裏面。所以你必須在lib/isp/lib下可以找到lib的目錄中啓動jar ...

+0

我在運行該命令的目錄中有一個lib文件夾,並具有所提及的所有必需jar文件MANIFEST文件。它仍然不起作用。 – dmantamp 2010-05-18 16:06:27