Java アプリケーション内から Java CUP (LEX/YACC パーサーの Java バージョン) を実行しようとしています。
これは私が持っているコードです(ほとんどをインターネットからコピーしました):
String command = "java " +
"-jar " +
"\"g:My Documents\\Dropbox\\Final Project\\Code\\Mano CPU\\Inputs\\Parser\\java-cup-11a.jar\" " +
"-destdir " +
"\"g:\\My Documents\\Dropbox\\Final Project\\Code\\Mano CPU\\src\\Assembler\" " +
"\"G:\\My Documents\\Dropbox\\Final Project\\Code\\Mano CPU\\Inputs\\Assembler\\Assembler.cup\"";
Process p = Runtime.getRuntime().exec(command);
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null)
{
System.out.println(line);
line=reader.readLine();
}
Win 7 のコマンド プロンプトでこのコマンドを実行すると (バックスラッシュと二重引用符をエスケープせずに)、実行されます。「-jar」の後のすべてをコメントアウトすると、Java オプションが表示されるので (コマンドが不正であるため、これは当然のことです)、実行できることがわかります。
私の推測では、スペースを含むパスを渡すことが問題です。String[] を使用してみましたが、同じ結果が得られます。スペースをエスケープしてもエラーが発生します。
どうすればこれを解決できるか、誰にもわかりませんか?
ありがとう。