如何使类可用于包外的Runtime java命令

时间:2016-12-28 22:13:39

标签: java process runtime.exec

我正在尝试从另一个Java程序运行Java程序,其中两个程序实际上都不在同一个程序包中,甚至不在同一个项目中,并且从我在SO上找到答案开始,这里是代码:< / p>

    try {
            Process processCompile = Runtime.getRuntime().exec("javac Main.java");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Process processRun = null;
        try {
            processRun = Runtime.getRuntime().exec("java Main");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            printLines(" stdout:", processRun.getInputStream());
            printLines(" stderr:", processRun.getErrorStream());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

执行以下代码会出现以下错误:

Error: Could not find or load main class Main

现在我知道我必须以某种方式使Main.java普遍可用于从另一个程序运行它。我不知道该怎么做。

我真的很感激这方面的一些帮助。

1 个答案:

答案 0 :(得分:0)

  

我正在尝试从另一个Java程序运行Java程序   程序实际上并不在同一个包中   项目,并开始我已经找到了答案,这里是   代码:

类在运行java命令时应该指定的包中定义:

try {
        processRun = Runtime.getRuntime().exec("java Main");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

此外,如果类是在包中定义的,那么最好在与包对称的目录结构中定义它。我说过,因为在编译课程时,你没有指定Main.java文件包的路径:

try {
            Process processCompile = Runtime.getRuntime().exec("javac Main.java");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }