.jar不运行,也找不到外部jar



我的jar在编译后将不会运行。我使用这个ant构建脚本

<project name="HelloWorld" basedir="." default="jar">
<property name="src.dir"     value="src"/>
<property name="build.dir"   value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir"     value="${build.dir}/jar"/>
<property name="libsSrc" value="libs"/>
<property name="main-class"  value="nat.ise.ApplicationStarter"/>
<path id="classpath">
    <fileset dir="${libsSrc}" includes="*.jar"/>
</path>
<pathconvert property="mf.classpath" pathsep=" ">
    <path refid="classpath"/>
    <mapper>
        <chainedmapper>
            <flattenmapper/>
            <globmapper from="*.jar" to="lib/*.jar"/>
        </chainedmapper>
    </mapper>
</pathconvert>
<target name="clean">
    <delete dir="${build.dir}"/>
</target>
<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="."  classpathref="classpath"  destdir="${classes.dir}"/>
</target>
<target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/${ant.project.name}.jar">
        <zipgroupfileset dir="${libsSrc}" includes="*.jar"/>
        <fileset dir="${classes.dir}" includes="**/*.class"/>
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
            <attribute name="Class-Path" value="${mf.classpath}"/>
        </manifest>
    </jar>
</target>
</project>

清单是正确的,我正在设法获得一些库,但当从cmd提示符运行时,我得到错误

java.io.FileNotFoundException

它所指的文件是JOGL库gluegen-rt-nactives-windowsamd64.jar

最初,我使用32位库从eclipse运行该项目,现在我已经将64位库包含在文件夹libs中,但它仍然告诉我找不到它们。

事实上,当我打开jar时,我现在可以看到所有.dll文件的两个副本(我只能假设这是一个来自JOGL的32位版本和一个来自64位版本)

难道没有办法让程序只使用32位库运行吗?我想减少分发的弹药数量。

我不认为我应该被否决,但嘿。

不管怎么说,问题是我引用了.jar中的.jar,我不认为这会是个问题,但事实确实如此。解决方案是将.jar(库)放在我编译的应用程序.jar旁边,并相应地更新清单。也可以在.jar中使用.jar,但需要使用另一组类才能做到这一点。Eclipse具有这一点,如果您从Eclipse中构建卓越的.jar,则可以在.jar中拥有.jar。

相关内容

  • 没有找到相关文章

最新更新