1

私はJavaアプリケーションを持っていて、それをダブルクリックするのと本質的に同じことをする新しいプロセスを生成したいと思います(.batファイルを開始します)。

そのプロセスを生成するために、両方を試しRuntime.getRuntime().exec()ました。ProcessBuilderこれらのアプローチはどちらも機能します (.bat ファイルを開始できます)が、私の問題は、ダブルクリックした場合と実際にはまったく同じことをしないことです。

具体的には、この .bat ファイルは、Windows SxS を使用して (サイド バイ サイドで) 実行するように構成された JVM (java.exe MyMainClass) を起動します。したがって、適切なjava.exe.configおよび java.exe.manifestファイルを作成しました。それをクリックすると、Java アプリケーションが起動し、適切な .dll が正常にロードされます (SxS が必要な理由)。

私の問題は、ProcessBuilderまたはを使用してまったく同じ.batファイル(まったく同じ引数とプロセス環境で)を開始Runtime.getRuntime().exec()すると、SxS構成が考慮されていないように見えるため、必要な.dllはまったくロードされず、エラーが発生します。

この.batファイルをダブルクリックしたときにWindowsが起動するのと同じ方法でこの.batファイルを起動する方法を知っている人はいますか? さらに、Java SxS 展開の経験がある人はいますか? ProcessBuilder が私の SxS 構成を無視する理由がよくわかりません。

前もって感謝します。

4

1 に答える 1

0

アプリケーションのbatファイルをロードするcmdウィンドウを起動してみることができます:

Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"C:\\path\\to\\the\\app.bat arg1 arg2\"");
于 2013-09-16T18:22:56.767 に答える