简体   繁体   English

运行Java -jar命令时出错

[英]Error running java -jar command

I created a jar file using the following ANT script 我使用以下ANT脚本创建了一个jar文件

<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>

The resulting jar file has the following MANIFEST.MF entry. 生成的jar文件具有以下MANIFEST.MF条目。

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

When I try to run the command java -jar mytest.jar , it fails and throws error saying dm.jb.Main not found. 当我尝试运行命令java -jar mytest.jar ,它失败并抛出错误,提示dm.jb.Main未找到。 But I could run the class by specifying the classpath java -classpath dm.jb.Main 但是我可以通过指定classpath java -classpath dm.jb.Main来运行该类

Please help me DM DM请帮我

If you run your jar like this 如果您这样运行罐子

java -jar <your jar name>

then java will ignore all classpath parameters you give and try to find it's resources with the given classpath inside the manifest. 然后,java将忽略您提供的所有classpath参数,并尝试在清单中使用给定的classpath找到它的资源。 But these pathes point to your local file system and not inside the jar. 但是这些路径指向的是本地文件系统,而不是指向jar的内部。 So you have to start the jar in a directory where your libs can be found at lib/isp/... 因此,您必须在可以在lib / isp /中找到您的lib的目录中启动jar。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM