コマンドを介して別のJavaアプリケーションを起動するJavaベースのアプリケーションランチャーを使用していますProcessBuilder
(同様に試しました)。Runtime.getRuntime().exec(new String[]{}
コマンドを手動で実行すると、正しく動作します。ゲームが起動します。エラーはありません。
java -jar -Djava.library.path="./lib/natives" mygame.jar
ランチャーから同じコマンド (絶対パスを使用) を実行すると、次のようになります。
ProcessBuilder pb = new ProcessBuilder(
"java",
"-jar",
"-Djava.library.path=\"" +nativesDirectory.getAbsolutePath() + "\"",
applicationJar.getAbsolutePath());
pb.redirectErrorStream(true);
pb.directory(applicationDirectory);
次のエラーが表示されます。
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
複数のバリエーションを試しましたが、コマンドが Java ランチャーから実行されたときにライブラリ パスを適切に設定しないようです。
他に試せることはありますか?コマンドは機能するのに、ランチャーが機能しないのはなぜですか? ファイルパスのスペースに問題があるのではないかと心配していたので、 ProcessBuilder を試しました(引用符で囲まれているにもかかわらず)
アプリケーションに libs/native ファイルの場所を指示/検出させ、常に引数を渡す必要を回避するより良い方法はありますか?