gpt4 book ai didi

java - 如何使类可用于包外的运行时 java 命令

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:17 25 4
gpt4 key购买 nike

我正在尝试从另一个Java程序运行Java程序,这两个程序不在同一个包中,实际上甚至不在同一个项目中,首先我找到了关于SO的答案,这里是代码:

    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 普遍可用才能从另一个程序运行它。但我不知道该怎么做。

我非常感谢对此的帮助。

最佳答案

I am trying to run a Java program from another Java program where both programs are not in the same package in fact not even in the same project and to begin with I had found an answer on SO, here is the code:

如果该类是在包中定义的,您应该在运行 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();
}

关于java - 如何使类可用于包外的运行时 java 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41370436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com