无法在我的Java程序中运行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

我有一个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(“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?多亏了你,我找到了解决方案。非常感谢。