これをJava GUIから実行すると、バックグラウンドで実行されるという問題が発生します。 コマンドプロンプトがまったく表示されません。
これを回避するには、 "cmd.exe" AND "start"でjava.exeを実行する必要があります。 なぜか分かりませんが、 "cmd/c start"を入力すると、実行時にコマンドプロンプトが表示されます。
しかし、「開始」との問題は、それが CであるとしてJavaのexeファイルへのパスが通常持っているアプリケーション (へのパスにスペースがあればということである:\プログラムファイル\のJava \ jre6には、 \ bin \ java.exeまたはそれに類するもの) 開始は "c:\ Programを見つけることができません"と失敗します
C:\ Program Files \ Java \ jre6 \ bin \ java.exeを引用符で囲む必要があります java.exeに渡すパラメータについて、startが文句を言っています。 "システムはファイル-cpを見つけることができません。"
"Program Files"のスペースをバックスラッシュでエスケープすることも機能しません。 したがって、スペースを使用しないことが考えられます。 bat拡張子を持つ一時ファイルを生成し、コマンドにスペースを入れて と入力し、batを実行します。 しかし、起動時にバットを実行しても、終了時には終了しません。 バッチファイルの最後に "exit"を付ける必要があります。
これはまだおかしなようです。
代わりに、私は "Program Files"のスペースで引用スペース引用符を使用すると、実際にstartで動作することがわかりました。変更上記EXECUTEクラスで
文字列ビルダーはに追加:実際のコードは(テストの形で)ので、次のようになりstepanchegの答え@上の拡大
append("cmd /C start \"Some title\" ").
append(java.lang.System.getProperty("java.home").replaceAll(" ", "\" \"")).
append(java.io.File.separator).
append("bin").
append(java.io.File.separator).
append("java").
append(" ").
append(new java.io.File(".").getAbsolutePath()).
append(java.io.File.separator).
append(CLASS_TO_BE_EXECUTED).
私はあなたが正しいと思いますが、main()メソッドでいくつかのクラスを持ち、別々のプロセスでそれらを起動したいのですか? –
exec( "java.exe"、CLASS_TO_BE_EXECUTED.class.getName())を実行するとどうなりますか? –
javaプログラムによって実行されるJavaクラスの実行のためのユーザからの入力の方法br.readLine()のようなものを使用 – paragjain