进程在执行 Java 时没有 运行
process does not run when executing Java
我正在尝试 运行 java 中的 .class 文件。这是我尝试过的:
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("cd target/classes/; java -cp ./ SoundHandler Correct; cd ../../");
我做了一些谷歌搜索,我能想到的最好的办法就是把它添加到最后:
pr.getInputStream();
pr.getErrorStream();
pr.getOutputStream();
这没有帮助。我想 运行 一个 .class 文件到 java。谢谢!
您向运行时提供了三个要执行的命令 - 但只有一个参数。它试图将其作为一个命令执行 - 然而这样的命令不存在。
如果命令包含多个元素(命令和参数),它们应该作为字符串数组传递,以便运行时可以区分它们。如果您使用 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 中的 .class 文件。这是我尝试过的:
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("cd target/classes/; java -cp ./ SoundHandler Correct; cd ../../");
我做了一些谷歌搜索,我能想到的最好的办法就是把它添加到最后:
pr.getInputStream();
pr.getErrorStream();
pr.getOutputStream();
这没有帮助。我想 运行 一个 .class 文件到 java。谢谢!
您向运行时提供了三个要执行的命令 - 但只有一个参数。它试图将其作为一个命令执行 - 然而这样的命令不存在。
如果命令包含多个元素(命令和参数),它们应该作为字符串数组传递,以便运行时可以区分它们。如果您使用 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);
}
一些聊天对话后的一点更新:主要思想是可行的,但类路径需要一些调查。