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

标签 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 的格式是什么?

最佳答案

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

  1. 如果 java 不在搜索路径上,您的 ProcessBuilder 将无法工作。

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

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

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


TL;DR - 如果您对 Java 安装做出一些假设,您所写的内容将有效(经过一些修改),但这些假设并不总是有效。


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

关于不同操作系统上的 Java 命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084765/

相关文章:

linux - 以编程方式读取 "/proc/bus/input/devices"

linux - 如何通过像 "crontab -e"这样的脚本检查 cron 语法?

java - cmd “class not found”

java - 如何获取servlet中的参数值?

java - 如何从文件加载 Java 枚举元素的值

java - 将 int 颜色转换为 int 组件

linux - pkill -KILL -f java 有什么作用?

java - 如何在每个 recyclerview 项目之间添加延迟?

linux - 如何在 Expect 脚本中返回生成的进程退出代码?

c - 问题中信号量锁无法正常工作