2010-05-16 138 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