我想运行之前编译的代码.我编译无论如何编译并不重要,但运行代码是问题.
我的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 /c java code D:/ /*this is not correct cmd command*/
它应该是
cmd /c java -cp D:/ code
当您在另一个文件夹中运行.class文件但不在当前文件夹中时,请使用-cp指定类路径
实际上没有错误nope.但是你没有捕获它们.捕获错误你可以使用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(); } } }