我正在尝试从 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[],但得到了相同的结果。转义空格也会导致错误。
有人知道我该如何解决这个问题吗?
谢谢。