0

ミニサイドプロジェクトとして作成しているランチャーがあり、jar ファイルを実行しようとしています。exeを実行する方法がわかりました。コードは次のとおりです。

mineshaft.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            String mhome = System.getProperty("user.home") + "";
            try {
                Runtime.getRuntime().exec("java -jar .mhome+ \\AppData\\Roaming\\.minecraft\\minecraft.exe");
            }

            catch (Exception a) {

            }

        }
    });

どこでも検索しましたが、誰もがこのコードが機能すると言っていますが、私には機能しません。助言がありますか?

4

2 に答える 2

1

まず、コマンドが間違っています。.mhome+? コマンドが正しいことを確認してください。コマンド プロンプトから次のように入力します。

java -jar .mhome\AppData\Roaming\.minecraft\minecraft.exe

それは本質的にあなたが実行しているものです。

また、スタックトレースを印刷してください。特に開発中。

私はあなたがこのようなものを探していると思います:

    public void actionPerformed(ActionEvent e) {
        String mhome = System.getProperty("user.home") + "";
        try {
            Runtime.getRuntime().exec("java -jar " + mhome + "\\AppData\\Roaming\\.minecraft\\minecraft.jar");
        }

        catch (Exception a) {
             a.printStrackTrace();
        }

    }
于 2012-09-13T01:45:06.430 に答える
0
JarInputStream stream = null;

try {   

  File jar = new File("/path/to/jar.jar");
  stream = new JarInputStream(new FileInputStream(jar));
  String mainClass = stream.getManifest().getMainAttributes().getValue("Main-class");
  ClassLoader loader = URLClassLoader.newInstance(new URL[] { jar.toURI().toURL() }, getClass().getClassLoader);
  Class<?> main = Class.forName(mainClass, loader);
  main.getDeclaredMethod("main", String[].class).invoke(null, null);

} finally {
  stream.close();
}

km1 の答えは、ニーズに合っている場合はより簡単です。

于 2012-09-13T02:18:24.830 に答える