Runtime.exec()给出错误:无法找到或加载主类

时间:2011-11-12 18:45:05

标签: java

我的Eclipse项目中的'Street.class'位于包trafficcircle中的\ bin下。下面的错误来自创建过程的stderror;我认为如果没有找到Runtime.exec就会先抱怨......这是怎么回事?

运行“街道”流程的代码:

    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

处理exitValue:1

是的,这适用于cmd行:

C:\ Users \ Brent> java -classpath“D:\ Java Programs \ IPCTrafficCircle \ bin”trafficcircle.Street 1 2

2 个答案:

答案 0 :(得分:2)

此代码通过键入命令行/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");

答案 1 :(得分:1)

如果找不到 java

Runtime.exec()会抱怨,这是您正在运行的进程。您正在阅读的消息来自该流程的输出。

您是否注意到您执行的操作与您在命令行上的操作之间存在差异? 那是问题。

您正在执行的java JVM需要能够找到您希望它运行的类。您提供的类路径(\bin)不正确。