不同操作系统上的Java命令行

时间:2015-06-27 03:11:51

标签: java linux operating-system processbuilder

好的,所以我使用进程构建器从当前的java进程启动一个独立的java进程,使用代码:

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "C:\\Users\\MyName\\Desktop\\Test.jar");
    pb.start();

测试它,就像一个简单的任务一样,命令总是在所有操作系统上都是“java -jar something.jar”?如果没有,mac和linux的格式是什么?

3 个答案:

答案 0 :(得分:1)

答案很复杂。一些并发症是:

  1. 如果ProcessBuilder不在搜索路径上,则java将无效。

  2. 您的ProcessBuilder会在搜索路径上显示您的java版本,该版本可能与您要使用的版本不同;例如如果用户安装了多个版本的java。

  3. 您正在使用带有Windows语法的JAR文件的路径名。这不适用于其他平台。

  4. 您正在使用java启动器。在Windows上将使用自己的控制台窗口启动JVM。 (这相当粗糙/丑陋。)您可能想要使用javaw。但是javaw只存在于Windows上。

  5. TL; DR - 如果您对Java安装做出一些假设,那么您所编写的内容将起作用(经过一些修改),但这些假设并非总是有效。

    我的建议是启动运行JAR文件的shell脚本或批处理文件,并为不同的平台提供不同的版本。以允许管理员/专家用户调整脚本的方式来解决与其软件部署相关的问题。

答案 1 :(得分:0)

是的,这适用于大多数linux,mac和windows。不过,我真的不知道它会在更加模糊的Linux平台上变得多毛。

Linux:https://askubuntu.com/questions/101746/how-can-i-execute-a-jar-file-from-the-terminal

Mac:Executing a jar on mac 10.8

对于那些蹩脚的文章感到抱歉,但他们说明了这一点。

答案 2 :(得分:0)

您可能想查看Apache Commons Exec。这是一个与之相关的问题。 How to run a java program using apache commons-exec?