有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

运行时从另一个Java cosole应用程序运行Java控制台应用程序

我需要从Java控制台应用程序运行此命令:

 /usr/bin/java -Xms512m -Xmx3072m -jar /Users/ivan/Desktop/market/market.jar 500 500 1 1 0.1 true true /Users/ivan/Desktop/market/files/simulationResult/

我试过了,但没用:

 Process child = Runtime.getRuntime().exec(new String[]{command}); // command is the string written above

我尝试了很多其他的方法,但都没有成功。有什么帮助吗

顺便说一句,我正在使用Mac(如果有必要的话)

编辑:使用上面的代码,我得到以下错误:

Exception in thread "main" java.io.IOException: Cannot run program "java -Xms512m -Xmx3072m -jar /Users/ivan/Desktop/market/market.jar 500 500 1 1 0.1 true true /Users/ivan/Desktop/market/files/simulationResult/": error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
    at java.lang.Runtime.exec(Runtime.java:593)
    at java.lang.Runtime.exec(Runtime.java:466)
    at SimulationStarter.main(SimulationStarter.java:59)
Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:53)
    at java.lang.ProcessImpl.start(ProcessImpl.java:91)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 3 more

编辑#2:我现在发送这个,而不是字符串“command”:

            String[] commands = new String[]{
                    "/bin/bash", "-c",
                    "\"/usr/bin/java -Xms512m -Xmx3072m -jar " + simulatorPath + " "
                    + var1 + " "
                    + var2 + " "
                    + var3 + " "
                    + var4 + " "
                    + var5 + " "
                    + var6 + " "
                    + var7 + " "
                    + var8 + " "
                    + "\""          
            };

但我仍然得到/bin/bash: /usr/bin/java -Xms512m -Xmx3072m -jar /Users/ivan/Desktop/market/market.jar 500 500 2 1 0.1 true true /Users/ivan/Desktop/market : No such file or directory

child.waitFor()返回数字127


共 (1) 个答案

  1. # 1 楼答案

    如果command是上面的字符串,那么

    new String[]{command}
    

    将为您提供一个包含一项的字符串数组。你应该试试

    command.split(' ')
    

    其中command是包含上述命令的字符串变量