我正在尝试在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文件。谢谢!
发布于 2018-09-23 01:26:49
您向运行时提供了三个要执行的命令-但只有一个参数。它试图将其作为一个命令来执行--但是这样的命令并不存在。
如果命令由多个元素(命令和参数)组成,则应将它们作为字符串数组传递,以便运行时可以区分它们。如果您使用的是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);
}
在一些聊天对话之后有一点更新:主要的想法是工作的,但是类路径需要一些调查。
https://stackoverflow.com/questions/52458983
复制相似问题