好的,所以我使用进程构建器从当前的java进程启动一个独立的java进程,使用代码:
ProcessBuilder pb = new ProcessBuilder("java", "-jar", "C:\\Users\\MyName\\Desktop\\Test.jar");
pb.start();
测试它,就像一个简单的任务一样,命令总是在所有操作系统上都是“java -jar something.jar”?如果没有,mac和linux的格式是什么?
答案 0 :(得分:1)
答案很复杂。一些并发症是:
如果ProcessBuilder
不在搜索路径上,则java
将无效。
您的ProcessBuilder
会在搜索路径上显示您的java版本,该版本可能与您要使用的版本不同;例如如果用户安装了多个版本的java。
您正在使用带有Windows语法的JAR文件的路径名。这不适用于其他平台。
您正在使用java
启动器。在Windows上将使用自己的控制台窗口启动JVM。 (这相当粗糙/丑陋。)您可能想要使用javaw
。但是javaw
只存在于Windows上。
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?