java - linux运行其他jar

标签 java linux bash execute processbuilder

我有一个问题。 我有一个 jar 文件,它应该执行启动另一个 jar 文件的 Linux 命令。

但如果我运行我的 jar,它总是告诉我:

java.io.IOException: Cannot run program "bash java -jar -Xmx2048M -Xms2G -XX:MaxPermSize=128M spigot.jar nogui" (in directory "/home/RusticGamesNetwork/MinecraftServers/MainLobby"): error=2, File or Directory not found
        at java.lang.ProcessBuilder.start(Unknown Source)
        at de.Cammeritz.RootServer.Servers.lobby(Servers.java:13)
        at de.Cammeritz.RootServer.Main.main(Main.java:11)
Caused by: java.io.IOException: error=2, File or Directory not found
        at java.lang.UNIXProcess.forkAndExec(Native Method)
        at java.lang.UNIXProcess.<init>(Unknown Source)
        at java.lang.ProcessImpl.start(Unknown Source)
        ... 3 more

这是我的 2 个类:

package de.Cammeritz.RootServer;

public class Main {

public static void main(String args[]) {

    Servers s = new Servers();

    System.out.println("Server werden gestartet!");

    s.lobby();

    try {
        Thread.sleep(10000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    System.out.println("In 10 sec. schließt sich das Programm selber!");

    try {
    Thread.sleep(10000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    System.out.println("Das Programm wird geschlossen!");

    System.exit(0);
    return;
}

}

还有这个:

package de.Cammeritz.RootServer;

import java.io.File;
import java.io.IOException;

public class Servers {

public void lobby() {

    ProcessBuilder pb = new ProcessBuilder("bash java -jar -Xmx2048M -Xms2G     -XX:MaxPermSize=128M spigot.jar nogui");
    pb.directory(new File("/home/RusticGamesNetwork/MinecraftServers/MainLobby/"));
    try {
       pb.start();
    } catch (IOException e) {
        e.printStackTrace();
    }

}
}

谢谢大家的帮助:)

最佳答案

问题不在于运行 java 时。甚至 bash 也没有被执行。我认为您根本不需要从 bash 运行 java。

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "spigot.jar", "-Xmx2048M", "-Xms2G,     "-XX:MaxPermSize=128M", "nogui");

发生的事情是 java 正在尝试运行名为“bash java -jar -Xmx2048M -Xms2G -XX:MaxPermSize=128M spigot.jar nogui”的可执行文件而不是“bash”的参数。

参见:http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html

关于java - linux运行其他jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25703593/

相关文章:

MySQL 插入查询中提到的 Java 数组元素未插入表中。而是抛出错误

regex - Find 命令中的正则表达式

linux - fish shell 和 ssh 远程命令的问题

linux - 如何使用特殊字符在中间显示 "grep"文本

java - 如何使我的 Web 应用程序与 SPDY、Jetty 一起工作

java - 在鼠标事件上添加 Java GUI 组件

java - 如何在 OpenSUSE 或 Ubuntu 中调出 java 控制台?

linux - 构建 Linux 内核

linux - 在新行上打印 awk 结果

java - 如何在Okhttp中使用Socks5代理来启动http请求