2012-03-30 26 views
-4

コンパイルした後でJarファイルが実行されません。私は、マニフェストが正しいと私はライブラリの一部が含ま取得する管理していますが、CMDプロンプトから実行したとき、私はエラー.jarが実行されず、外部jarが見つかりません

java.io.FileNotFoundException 

それがあるファイルを取得し、この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> 

を使用しますJOGLライブラリを参照してください。gluegen-rt-natives-windowsamd64.jar

最初は32ビットライブラリを使用してEclipseからプロジェクトを実行していましたが、64ビットライブラリをlibsフォルダに含めましたが、まだそれはそれらを見つけることができません。

私はjarファイルを開いたとき、私は今、すべての.dllファイルの2つのコピーを見ることができます実際には

(私は、これは32ビットから1とJOGLの64ビットバージョンから1であると仮定することができます)

32ビットライブラリだけでプログラムを実行させる方法はありませんか?私は、私がしなければならない分配の量を減らしたい。

+5

コマンドラインから実行すると、java -jar はエラーを出力しますか? – kevingreen

+1

これはおそらく 'NoClassDefFound'例外の古典的なケースです... kevingreenが言ったことを行い、あなたが得るエラーを見てください。 –

+0

私はあなたに答えるために質問を編集しました。 – Neilos

答えて

0

私はdownvotesにふさわしいとは思わないが、ねえ。

とにかく問題は私が.jars内の.jarsを参照していたことでしたが、これは問題ではないと思っていましたが、それは問題でした。解決策は、コンパイルされたアプリケーションの.jarと一緒に.jars(ライブラリ)を配置し、それに応じてマニフェストを更新することでした。 .jars内で.jarsを使用することもできますが、これを可能にするために別のクラスセットを使用する必要があります。 Eclipseにはこれがあり、Eclipse内からexcecutable .jarをビルドすると、.jars内に.jarsを持つことができます。

関連する問題