无法在我的Java程序中运行jar,无结果无错误
我有一个activeMq服务器和该服务器的侦听器。在我的侦听器中,我尝试启动一个可运行的jar文件无法在我的Java程序中运行jar,无结果无错误,java,jar,activemq,Java,Jar,Activemq,我有一个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
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(“Start encrypt with*)”。使用命令“htop”,我可以看到进程,但不会创建“console.log”。
有人有主意吗
抱歉,英语太蹩脚了。输入/输出重定向是命令shell(cmd、bash等)固有的功能。
java.exe
不知道这一点。相反,应用程序启动的进程允许您访问其输入流和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());
}
我解决了这个问题。谢谢你的帮助。没有帮助我找不到答案 问题在于pom.xml中的依赖项。 我将条目从activemqall更改为activemqcore,它成功了
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.7.0</version>
</dependency>
org.apache.activemq
activemq内核
5.7.0
问题是activemq all libs中的spring库。出现了版本崩溃。我更改了它。重定向流对我来说并不重要。问题是jar没有运行。如果我在cmd或bash中键入命令,它会运行得很好。即使在cl中注释掉所有读取的流,情况也是如此ass?我想这可能会阻碍你。那个子进程做什么?你如何检查成功和失败?如果它正在运行,你看到了这个进程-你也看到了传递的参数吗?可能是环境有缺陷,没有找到jar文件的路径?可能试试绝对路径到.jar?多亏了你,我找到了解决方案。非常感谢。