3

私はこのばかげた未知の行動を起こしています。私のアプリケーションでは、いくつかのタスクを実行するために Java プロセスを開始する必要があります。したがって、以下を実行します。

1a) String[] ls = {"cmd",
                "/C",
                "\"C:\\t e m p\\run time\\jre\\bin\\java.exe\"",
                "-jar",
                "Canon.jar"};
ProcessBuilder p = new ProcessBuilder(ls);
p.redirectErrorStream();
Process pp = p.start();

上記は完全に機能します。ただし、フルパスにCanon.jar空白が含まれていると言うと、機能しません。基本的に、パスquotesの周りに追加する必要があります。Canon.jarすなわち

1b) String[] ls = {"cmd","/C",
                "\"C:\\Prac\\t e m p\\run time\\jre\\bin\\java.exe\"","-jar",
                 "\"C:\\Prac\\t e m p\\Canon.jar\""};

引用符を含めた後でも、上記はまだ機能しません。それは言います:

末尾の 'C:\Users\Jatin\Documents\Prac\t' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。

最大の問題は、以下も機能しないことです。

 1c) String[] ls = {"cmd","/C",
                "\"C:\\Prac\\t e m p\\run time\\jre\\bin\\java.exe\"","-jar",
                 "\"C:\\Prac\\temp\\Canon.jar\""};//contains no white space. 

それでも同じエラーが表示されます。Canon.jarpath toに空白が含まれていない場合、一体どうやってそれをもう一度言うことができますか。java.exe作業時にパスに問題があると表示されるのはなぜですか1a

4

1 に答える 1

2

本当に必要cmdですか?削除することを検討してください。

ProcessBuilder p = new ProcessBuilder(new String[]{"C:\\Prac\\t e m p\\run time\\jre\\bin\\java.exe","-jar",
               "C:\\Prac\\t e m p\\Canon.jar"};
于 2013-05-23T07:37:17.847 に答える