我想运行之前编译的代码.我编译无论如何编译并不重要,但运行代码是问题.
我的 code.java
public class code{
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
Run Code Online (Sandbox Code Playgroud)
然后我编译了这段代码并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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里没有错误,但这段代码没有做任何事情.没有cmd打开,没有.我哪里错了?我该怎么办?
目前你的cmd
命令是错误的。
cmd /c java code D:/ /*this is not correct cmd command*/
Run Code Online (Sandbox Code Playgroud)
它应该是
cmd /c java -cp D:/ code
Run Code Online (Sandbox Code Playgroud)
当您在不同文件夹中但不在当前文件夹中运行 .class 文件时,请使用-cp
指定类路径
there is no error
不,实际上有。但是你没有捕获它们。要捕获你可以使用的错误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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
172 次 |
最近记录: |