Java Runtime.exec()给出错误:无法找到或加载主类
我的Eclipse项目中的“Street.class”在包trafficcircle的\bin下。下面的错误来自所创建进程的标准错误;我以为Runtime.exec如果找不到它会先抱怨…这是怎么回事 运行“Street”进程的代码:Java Runtime.exec()给出错误:无法找到或加载主类,java,Java,我的Eclipse项目中的“Street.class”在包trafficcircle的\bin下。下面的错误来自所创建进程的标准错误;我以为Runtime.exec如果找不到它会先抱怨…这是怎么回事 运行“Street”进程的代码: Process process = runtime.exec("java -classpath \\bin trafficcircle.Street 1 2"); 其中“街道”是: public class Street { /** * @param
Process process = runtime.exec("java -classpath \\bin trafficcircle.Street 1 2");
其中“街道”是:
public class Street {
/**
* @param args
* 0 - Simulation run time
* 1 - Flow time interval
*/
public static void main(String[] args) {
System.out.println(args[0]);
System.out.println(args[1]);
System.out.flush();
}
}
流程打印输出:
错误:找不到或加载主类trafficcircle.Street
进程存在值:1
是的,这在cmd行中起作用:
C:\Users\Brent>java-classpath“D:\java Programs\ipctrackcircle\bin”trafficcircle.Street 1 2运行时。如果找不到java,则exec()会抱怨,这是您正在运行的进程。您正在读取的消息来自该进程的输出
您是否注意到您正在执行的操作与您在命令行上所说的操作之间的差异?这就是问题所在
您正在执行的java JVM需要能够找到您希望它运行的类。您提供的类路径(
\bin
)不正确。此代码在文件夹/bin
中运行时,通过键入命令行java Test
,提供预期结果
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Test {
public static void main(String[] args) throws Exception {
Process process = Runtime.getRuntime().exec(
"java trafficcircle.Street 1 2");
BufferedReader br = new BufferedReader(new InputStreamReader(
process.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
}
但是,在Eclipse中运行时,它不会给出任何结果。为了得到结果,我必须设置类路径
"java -cp /Users/wannik/Java/Workspace/MyProject/bin trafficcircle.Street 1 2");
为什么要尝试使用
Runtime.exec()
来运行Eclipse生成的代码和java.exe
?仅供参考,Eclipse有一个运行按钮。我看不出您想要完成什么。您在哪里运行了具有exec(…)
命令的类?因此,我不必每次要测试时都按几次run按钮。这个程序将是一个进程间通信模拟,创建进程并让它们通信(用于学校)。wannik,代码在我的Eclipse项目\bin\Main.class中。我只需按eclipse运行按钮来运行Main。好吧,它不会将我的项目视为工作目录,因此我不能使用相对路径?\bin
不是相对路径,而是绝对路径\bin
将是一个相对路径,如果这是您构建事物的方式。是的,使用绝对路径是可行的…但不会跨机器工作。感谢您的确认。我必须在Eclipse中使用完整路径。