我现在面临一个非常奇怪的问题。我花了2个小时来重现并得到这个错误的“解决方案”。
发生这种情况:
我尝试启动位于System.getProperty("user.dir")
的另一个.jar文件。
实际上,我用这个来开始:
Runtime.getRuntime().exec("java -jar "+System.getProperty("user.dir")+System.getProperty("file.separator")+"myJar.jar");
如果System.getProperty("user.dir")
的内容如下所示,这样可以正常工作:
C:\MyProgramm\
但如果System.getProperty("user.dir")
看起来像:
C:\My Programm\
它不起作用。很奇怪,beacuase没有异常抛出。 如果可以的话,请,如果我的解释足够明确,你能否为我解决这个问题?
对不起我的英文,如果有任何问题,请随时提出所有问题。
答案 0 :(得分:2)
如果我的解释足够清楚,你能否为我解决这个问题?
当你为它运行一个字符串时,它希望使用空格作为分隔符,例如
java -jar C:\My Program\myJar.jar
有四个字
java
-jar
C:\My
Program\myJar.jar
简单的解决方案是不让它进行解析。
Runtime.getRuntime().exec(new String[] {
"java", "-jar", System.getProperty("user.dir")+System.getProperty("file.separator")+"myJar.jar" } );
现在它不再将空格视为分隔符。
运行程序时,会将错误发送到错误流,并且不会触发异常。我建议你一直阅读错误流,看看你可能会遇到什么错误。
答案 1 :(得分:2)
您应将命令放在String[]
中,如下所示:
String[] command = new String[]{"java","-jar",System.getProperty("user.dir")+System.getProperty("file.separator")+"myJar.jar"};
而不是使用
Runtime.getRuntime().exec(command);
希望这有帮助。
答案 2 :(得分:1)
如果路径包含空格,则必须在路径周围使用引号。
java -jar "C:\My path has spaces\my app.jar"
在您的具体案例中:
Runtime.getRuntime().exec("java -jar \""+System.getProperty("user.dir")+System.getProperty("file.separator")+"myJar.jar\"");
\"
是"
的转义字符。