1

問題は、ゲームランチャーを作成しようとしていて、ログインすると実際のゲームが開始されることです。

これを行うように言われたコードはRuntime.getRuntime().exec();

のような単純なプログラムを実行できますRuntime.getRuntime().exec("firefox");が、プログラムを実行しようとすると起動しません。

これは私のコードです

Map<String, String> g = System.getenv(); //find home dir
System.out.println("java -jar " + g.get("HOME") + "/.2DMC/bin/2DG.jar");
Runtime.getRuntime().exec("java -jar " + g.get("HOME") + "/.2DMC/bin/2DG.jar");

私も試してみました

Map<String, String> g = System.getenv(); //find home dir
System.out.println("java -jar " + g.get("HOME") + "/.2DMC/bin/2DG.jar");
Process proc = Runtime.getRuntime().exec("java -jar " + g.get("HOME") +
                                         "/.2DMC/bin/2DG.jar");

Linux Debian を使用しています

java -version出力付き

java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.3) (6b27-1.12.3-1)
OpenJDK Client VM (build 20.0-b12, mixed mode, sharing)

すべての助けが高く評価されました

4

2 に答える 2

2

実行しようとしたときに何が起こるかを説明していないのでjava -jar(例外?何か?Processオブジェクトを取得しますか?)、それが発生する理由の 1 つを考えることができます。環境HOME変数にはスペースが含まれており (Windows を使用していますよね)、混乱を招きexec()ます。

私の理論が正しければ、exec()実際には次のように1文字列のコマンドを解析していHOMEますC:\Documents and Settings\Myself:

という名前のプログラムを実行javaし、次の引数を渡します。

  1. -jar
  2. C:\Documents
  3. and
  4. Settings\Myself\whatever.jar

実行する最も安全な方法は、代わりに文字列の配列を渡すことです。

Runtime.exec(new String[] {"java", "-jar", g.get("HOME")+"/.2DMC/bin/2DG.jar"});
于 2013-03-05T10:39:47.803 に答える
0

問題が見つかりました。それは私の2番目のジャー側にありました。一部のライブラリを正しくロードしていなかったため、別の場所からは機能しませんでした。

問題を修正しました。助けてくれてありがとう

于 2013-03-06T11:17:01.673 に答える