2011-07-19 18 views
3

おはよう!.jarファイルを起動できません(LWJGLを使用)

(Netbeansを使用して)jarファイルを作成しましたが、起動できません。このプロジェクトはlwjglライブラリを使用します。私のIDEの中でうまくいきます。

は、私は次のコマンドを使用します。

java -jar LWJGL_TimerExample.jar 

回答は以下のとおりです(このライブラリなし)

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path 
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758) 
at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
at java.lang.System.loadLibrary(System.java:1045) 
at org.lwjgl.Sys$1.run(Sys.java:73) 
at java.security.AccessController.doPrivileged(Native Method) 
at org.lwjgl.Sys.doLoadLibrary(Sys.java:66) 
at org.lwjgl.Sys.loadLibrary(Sys.java:82) 
at org.lwjgl.Sys.<clinit>(Sys.java:99) 
at org.lwjgl.opengl.Display.<clinit>(Display.java:130) 
at Sourse.TimerExample.start(TimerExample.java:32) 
at lwjgl_timerexample.Main.main(Main.java:21) 

他のプロジェクトが正常に動作します。どうすればこのエラーを解決できますか?

私のマニフェストは次のとおりです。

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.1 
Created-By: 1.6.0_26-b03-384-10M3425 (Apple Inc.) 
Main-Class: lwjgl_timerexample.Main 
Class-Path: lib/jinput.jar lib/lwjgl.jar lib/lwjgl_util.jar 
X-COMMENT: Main-Class will be added automatically by build 
+1

これを解決してください: 'no lwjgl in java.library.path' –

答えて

4

あなたは 'を介して側面に沿ってネイティブファイルにそれらのjarファイルとポイントを持っている必要がありますので、あなたが現在それをやろうとしているように動作するようにつもりはありません-Djava.library.path 'パラメータ。

単一のjarだけが必要な場合、コマンドラインとネイティブファイルの面倒を避けたい場合は、JarSpliceツールを使用します。 JarSpliceは使いやすく、ネイティブファイルを自動的に処理します。

1)プロジェクト(クラスとリソース)をjarファイルにエクスポートするだけで簡単に(IDEで簡単に実行できます)。

2)次に、JarSpliceを実行して、必要なすべてのjarファイル(アプリケーションjar、lwjgl.jar、および使用している他の外部Jarファイル)を追加します。

3)次にネイティブファイルのタブにすべてのネイティブファイル(windows * .dll、linux * .so、mac * .dylib & * .jnilib)を追加します。

4)クラスタブでメインクラスを追加します。その後、あなたの瓶を作成します。

これをダブルクリックするだけで(またはコマンドラインで 'java -jar yourapp.jar'を使用したい場合)、このjarを実行できます。 LWJGL wikiから

+0

愚かな質問を申し訳ありません...私はLWJGL_TimerExampleという名前のプロジェクトを持っています。 Sourseとlwjgl_timerexampleの2つのパッケージで構成されています。 SourseにはTimerExample.java、lwjgl_timerexampleにはMain.javaが含まれています。 メインクラスの正しい方法は何ですか?メイン? – ExiRe

+0

はい、packagename.MainClassですので、あなたの場合は、Mainが実行しようとしているクラスであればlwjgl_timerexample.Mainになります。 – Gavin

+0

fat jarを作成すると、次のエラーが表示されます。 重複エントリ:META-INF/MANIFEST.MF –

1

LWJGL consists of two parts, a java part and a native code part. You must setup both of these parts properly in order for lwjgl to work. In order to setup the java part you must add lwjgl.jar to the classpath (as an external library jar). As for the native part (*.dll files on windows, *.so on linux, *.jnilib on mac, etc) you must tell java which folder the natives are located in for LWJGL to be able to find them (use the -Djava.library.path=path/to/dir vm parameter to do this).

あなたの第二部が欠落しているようだ - あなたのjava.library.pathにネイティブライブラリを持ちます。

+0

はい、私のプログラムはネイティブパートを使用します。私はIDEが自動的にそれを追加すると思った。 – ExiRe

+0

マニフェストには?私は100%確信しているわけではありませんが、http://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifestを見てくださいマニフェスト内のライブラリパスを指定します。 /Djava.library.path =/path /を/ native/libに追加すると動作しますか? –

+0

Aが試みました:java -jar -Djava.library.path = -Djava.library.path =/Users/serg/LWJGL_2_7_1/lwjgl-2.7.1/native/macosx LWJGL_TimerExample。jar ウィンドウが表示されました! – ExiRe