我有一台activeMq服务器和一台这个服务器的监听器。在我的监听器中,我尝试启动一个可运行的jar文件。
String[] args = new String[]{
"java",
"-jar",
"HelloWorld.jar"};
try {
ProcessBuilder pb = new ProcessBuilder(args);
Process p = pb.start();
System.out.println("Start encrypt with: " + String.join(" ", args));
} catch (Exception e) {
System.out.println(e.getMessage());
}
我的HelloWorld.jar
public class HelloWorld {
public static void main(String[] args) {
File file = new File("/tmp/test/test.txt");
file.mkdirs();
}
}
如果我在服务器中编写队列并且监听器启动,我可以看到'System.out.println(“用*开始加密)”。使用命令'htop'我可以看到进程,但是'控制台' .log'未创建。 有人有想法吗?
抱歉蹩脚的英语。
答案 0 :(得分:0)
输入/输出重定向是命令shell固有的特性(cmd,bash,无论如何)。 java.exe
不知道这一点。相反,然后您的应用启动的流程可让您访问其InputStream和OutputStream
。
因此,如果您希望将输出写入console.log,则需要阅读流程“InputStream
并自行写入console.log
。
首先以这种方式尝试,以确保您的读取不会阻止进度:
try {
ProcessBuilder pb = new ProcessBuilder(args);
Process p = pb.start();
System.out.println("Start encrypt with: " + String.join(" ", args));
} catch (Exception e) {
System.out.println(e.getMessage());
}
答案 1 :(得分:0)
我解决了这个问题。谢谢您的帮助。没有帮助我找不到答案。
问题是我的pom.xml中的dependency-Entry。 我将条目从activemq-all更改为activemq-core并且有效。
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.7.0</version>
</dependency>
问题是activemq-all libs中的spring-library。有一个版本崩溃。