gpt4 book ai didi

java - 在运行时运行 Java 文件

转载 作者:行者123 更新时间:2023-12-01 15:18:17 25 4
gpt4 key购买 nike

我想在运行时运行应用程序用户提供的 java 文件。

我尝试过:

Process p1 = Runtime.getRuntime().exec("javac MyClass.java");
p1.waitFor();
Process p2 = Runtime.getRuntime().exec("java MyClass");
p2.waitFor();

但是这不起作用。它创建一个类文件,但不创建二进制文件。

有什么建议吗?

我会精确说明我在做什么:

这是我的 java 文件:

public class MyClass {
public void myMethod(){
System.out.println("My Method Called");
}
}

这是我尝试编译和执行此类的代码:

 public class TestExecute {

private static void printLines(String name, InputStream ins) throws Exception {
String line = null;
BufferedReader in = new BufferedReader(
new InputStreamReader(ins));
while ((line = in.readLine()) != null) {
System.out.println(name + " " + line);
}
}

private static void runProcess(String command) throws Exception {
Process pro = Runtime.getRuntime().exec(command);
printLines(command + " stdout:", pro.getInputStream());
printLines(command + " stderr:", pro.getErrorStream());
pro.waitFor();
System.out.println(command + " exitValue() " + pro.exitValue());
}

public static void main(String[] args) {
try {
runProcess("javac MyClass.java");
runProcess("java MyClass");
} catch (Exception e) {
e.printStackTrace();
}
}

}

在该路径中,创建了MyClass.class。 Hier是控制台中的输出:

javac C:/Users/Maher/workspace/1/src/main/java/model/MyClass.java exitValue() 0

我在 Windows 7 上使用 eclipse。

我想显示“我的方法调用”来测试此解决方案,但它没有显示。

有什么帮助吗?谢谢!

最佳答案

如果您期望编译或运行 java 类的输出,那么您必须读取子进程的InputStream

 Process p2 = Runtime.getRuntime().exec("java MyClass");
BufferedReader br=new BufferedReader(new InputStreamReader(p2.getInputStream()));

String line=null;
while( (line=br.readLine())!=null)
{
System.out.println(line);
}
p2.waitFor();

编辑:添加 main() 方法。

public class MyClass {
public void myMethod(){
System.out.println("My Method Called");
}
public static void main(String[] args){
new MyClass().myMethod();
}
}

关于java - 在运行时运行 Java 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11329777/

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