好的,所以我正在使用进程构建器从当前 java 进程启动一个独立的 java 进程,使用代码:
ProcessBuilder pb = new ProcessBuilder("java", "-jar", "C:\\Users\\MyName\\Desktop\\Test.jar");
pb.start();
为了测试它,就像一个简单的问题一样,命令在所有操作系统上是否总是“java -jar something.jar”?如果不是,mac 和 linux 的格式是什么?
最佳答案
答案很复杂。一些并发症是:
如果
java
不在搜索路径上,您的ProcessBuilder
将无法工作。您的
ProcessBuilder
会在搜索路径上为您提供 java 的版本,这可能与您要使用的版本不同;例如如果用户安装了多个版本的 java。您正在为 JAR 文件使用 Windows 语法的路径名。这不适用于其他平台。
您正在使用
java
启动器。在将使用自己的控制台窗口启动 JVM 的 Windows 上。 (这相当粗糙/丑陋。)您可能想改用javaw
。但是javaw
只存在于 Windows 上。
TL;DR - 如果您对 Java 安装做出一些假设,您所写的内容将有效(经过一些修改),但这些假设并不总是有效。
我的建议是启动运行 JAR 文件的 shell 脚本或批处理文件,并为不同的平台提供不同的版本。以允许管理员/专家用户调整脚本以解决与其软件部署相关的问题的方式进行。
关于不同操作系统上的 Java 命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084765/