我在 Windows 7 上运行 Eclipse(在 XP 上也是如此)。 正如您在下面看到的,路径保持不变,只是使用第二种技术(我需要使用)找不到它。
这个有效:
Runtime runtime = Runtime.getRuntime();
// Start street processes
for (int i=0; i < NUM_STREETS; i++) {
Process process = runtime.exec("java -classpath \\bin trafficcircle.Street");
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null && !line.isEmpty()) {
System.out.println(line);
}
}
但这不是:
Runtime runtime = Runtime.getRuntime();
String[] cmdAndArgs = {"java -classpath \\bin trafficcircle.Street",
"",
"" };
// Start street processes
for (int i=0; i < NUM_STREETS; i++) {
Process process = runtime.exec(cmdAndArgs);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null && !line.isEmpty()) {
System.out.println(line);
}
}
并产生以下异常。为什么?谢谢。
java.io.IOException: Cannot run program "java -classpath \bin trafficcircle.Street": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at trafficcircle.Main.runConfig(Main.java:81)
at trafficcircle.Main.main(Main.java:20)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 5 more
最佳答案
我认为您需要将参数分开放置。否则它会寻找一个名为 java -classpath...
的 exe。所以像
String[] cmdAndArgs = {"java",
"-classpath",
"\\bin",
"trafficcircle.Street" };
要传递额外的参数,只需将它们包含在数组中
String arg1 = ...;
String arg2 = ...;
String[] cmdAndArgs = {"java",
"-classpath",
"\\bin",
"trafficcircle.Street",
arg1,
arg2 };
关于java - 奇怪的 runtime.exec() 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8102916/