我正在尝试在 java 中运行 .class 文件。这是我尝试过的:
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("cd target/classes/; java -cp ./ SoundHandler Correct; cd ../../");
我做了一些谷歌搜索,我能想到的最好的办法就是把它放在最后:
pr.getInputStream();
pr.getErrorStream();
pr.getOutputStream();
这没有帮助。我想在 java 中运行 .class 文件。谢谢!
最佳答案
您向运行时提供了三个要执行的命令 - 但只有一个参数。它试图将其作为一个命令来执行 - 然而这样的命令不存在。
如果命令由多个元素(命令和参数)组成,则应将它们作为字符串数组传递,以便运行时可以区分它们。如果您使用 shell 命令(如 cd),则该命令应作为参数传递给 shell。
尝试这样的事情:
//if you are using unix-like OS. For Windows change sh -c to cmd /k
String[] cmd = new String[] {"sh", "-c", "cd target/classes/ && java -cp ./ SoundHandler Correct"};
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd)
<小时/>
要调试进程,您可以通过以下方式读取命令的输出:
InputStream is = pr.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null){
System.out.println("MSG: " + line);
}
<小时/>
一些聊天对话后的一些更新:主要想法是有效的,但类路径需要一些调查。
关于java - 执行Java时进程不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52458983/