无法在我的Java程序中运行jar,没有结果没有错误

时间:2015-12-01 10:35:30

标签: 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 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'未创建。 有人有想法吗?

抱歉蹩脚的英语。

2 个答案:

答案 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。有一个版本崩溃。