9

Netbeans 経由で LWJGL ライブラリを使用して、Java で基本的なゲームを作成しています。

lwjgl、lwjgl_util、および jinput .jar を使用してライブラリを作成し、プロジェクトのプロパティの「実行」カテゴリに -Djava.library.path=C:\LWJGL\native\windows を追加しました。

ファイルを Netbeans で実行すると、問題なく完全に実行されます。しかし、ファイルをダブルクリックして.jarを実行すると、何もポップアップしません(私が知る限り、瞬間的なcmdエラーウィンドウでさえありません)。コマンドラインからファイルを実行すると、次のようになります。

C:\Users\200160765>java -jar "C:\Users\200160765\Documents\NetBeansProjects\Game
\dist\Game.jar"
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.libr
ary.path
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        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 game.Draw.createWindow(Draw.java:198)
        at game.Draw.init(Draw.java:214)
        at game.Draw.run(Draw.java:56)
        at game.Main.main(Main.java:9)

DLL と .jar ライブラリ ファイルを Game.jar と同じディレクトリの「lib」フォルダに移動し、それらを Game.jar と同じディレクトリに移動しようとしましたが、同じエラーが発生します。なぜこれをネットビーンズの外で動作させることができないように見えるのか、誰かが私を助けてくれますか?

4

7 に答える 7

9

コマンド ライン パラメータ -Djava.library.path="path/to/natives" を使用して、ネイティブ ファイルが配置されている場所を jvm に指定する必要があります。バッチ (.bat) ファイルを使用してこれを指定し、アプリケーションを開始することができます。

または、 JarSpliceなどのツールを使用して、すべての jar から単一の実行可能な jar ファイルを作成し、同時にネイティブ ファイルをその中に含めることができます。ネイティブを手動で指定する際の面倒な部分を自動化し、より優れたエンド ユーザー エクスペリエンスを提供します。

JarSplice を使用するには、jars タブで game.jar、lwjgl.jar、lwjgl_util.jar、および jinput.jar を選択するだけです。次に、すべての *.dll、*.so、*.dylib、および *.jnilib ファイルが [ネイティブ] タブに表示されます。クラス タブにメイン クラスを追加し、単一の実行可能 jar を作成します。

于 2011-07-05T21:09:21.697 に答える
3

LWJGL には、特定のプラットフォーム用のネイティブ コンポーネントが含まれている必要がありますjava.library.path。これらはnativeLWJGL ディストリビューションのサブディレクトリにあり、.soLinux、OSX、Solaris、および.dllWindows で終了します。

于 2011-07-05T21:04:49.450 に答える
0

そして、これを行うさらに別の方法は、Java Web Start(jnlp)を使用することです:http: //lwjgl.org/forum/index.php?topic = 3763.0

これにより、いくつかの点でプロジェクトの共有が容易になります。

于 2011-07-05T21:31:12.107 に答える
0

私はこの問題を抱えていて、jarSplice (http://ninjacave.com/jarsplice) を使用して修正しました。

ファット jar を作成する前に、jar 内の事前に配置されたネイティブをすべて削除してください。そうしないと、重複エラーが発生します。

于 2012-12-28T17:12:45.283 に答える
0

確認するもう1つのこと:

  • 32 ビット JVM を使用している場合は、32 ビット ライブラリが必要です。(64ビットOSでも)
  • 64 ビット JVM を使用している場合は、64 ビット ライブラリが必要です。
于 2018-08-14T11:19:07.403 に答える