.jar не запускается и не может найти внешний jar - PullRequest
0 голосов
/ 30 марта 2012

Мой кувшин не запустится после того, как я скомпилировал его.Я использую этот скрипт Ant 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>

Манифест правильный, и мне удается включить некоторые библиотеки, но при запуске из командной строки я получаю сообщение об ошибке

java.io.FileNotFoundException

Файл, который он ссылается на библиотеку JOGL gluegen-rt-natives-windowsamd64.jar

Изначально я запускал проект из eclipse, используя 32-битные библиотеки, теперь я включил 64-битные библиотеки в libs папки, новсе еще говорит мне, что не может их найти.

На самом деле, теперь я вижу, когда открываю флягу, две копии всех файлов .dll (могу только предположить, что это одна из 32-битных иодна из 64-битных версий JOGL)

Нет ли способа заставить программу работать, используя только 32-битные библиотеки?Я хочу уменьшить количество раздач, которые я должен сделать.

1 Ответ

0 голосов
/ 09 апреля 2012

Я не думаю, что заслуживал отрицательных голосов, но эй.

Ну, в любом случае проблема была в том, что я ссылался на .jars в .jars, я не думал, что это будет проблемой, но это так. Решением было поместить .jars (библиотеки) вместе с моим скомпилированным приложением .jar и соответствующим образом обновить манифест. также можно использовать .jars внутри .jars, но вам понадобится другой набор классов, чтобы позволить вам это сделать. У Eclipse есть это, и если вы создаете исключительный .jar из затмения, вы можете иметь .jars в .jars.

...