gpt4 book ai didi

java - 在运行时运行已编译的 java 代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:56 25 4
gpt4 key购买 nike

我想运行之前编译过的代码。无论如何我编译了如何编译并不重要,但运行代码是问题。

我的code.java

public class code{

public static void main(String[] args) {
System.out.println("Hello, World");
}
}

然后我编译了这段代码并生成了code.class(在D:// 目录中)。现在我想运行这个编译后的文件。我的代码是:

import java.io.IOException;
import java.io.InputStream;

public class compiler {
public static void main(String[] args) {
final String dosCommand = "cmd /c java code";
final String location = "D:\\";
try {
final Process process = Runtime.getRuntime().exec(
dosCommand + " " + location);
final InputStream in = process.getInputStream();
int ch;
while((ch = in.read()) != -1) {
System.out.print((char)ch);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

这里没有错误,但是这段代码没有做任何事情。没有打开cmd,什么都没有。我哪里错了?我该怎么办?

最佳答案

当前你的 cmd 命令是错误的。

cmd /c java code D:/   /*this is not correct cmd command*/

应该是

cmd /c java -cp D:/ code

当你在不同文件夹而不是当前文件夹中运行 .class 文件时,使用 -cp 指定类路径

没有错误实际上没有。但你没有捕获它们。要捕获错误,你可以使用 getErrorStream()

示例代码

public class compiler {

public static void main(String[] args) {
final String dosCommand = "cmd /c java -cp ";
final String classname = "code";
final String location = "D:\\";
try {
final Process process = Runtime.getRuntime().exec(dosCommand + location + " " + classname);
final InputStream in = process.getInputStream();
final InputStream in2 = process.getErrorStream();
int ch, ch2;
while ((ch = in.read()) != -1) {
System.out.print((char) ch);
}
while ((ch2 = in2.read()) != -1) {
System.out.print((char) ch2); // read error here
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

关于java - 在运行时运行已编译的 java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428091/

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