java - 执行Java时进程不运行

标签 java process command exec

我正在尝试在 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/

相关文章:

java - 如何获取联系人号码的组ID(Android)

java - 与 Robot 类一起使用的监听器

process - 如何通过 session 结束时不终止的 ssh 启动进程?

android - 如何检测android上的死进程

linux - Linux 中的 "rm"命令如何工作?

python - 在 Fabric 中运行 OS native 命令 VS Python

java - 来自单例的两个对象

java - 一对一关系,只保留外键

linux - 终止一系列进程的最可靠方法

python - 如何在 Windows 命令提示符下运行 python 文件?