【问题标题】:ProcessBuilder for Mac OS & LinuxMac OS 和 Linux 的 ProcessBuilder
【发布时间】:2017-06-02 01:22:23
【问题描述】:

我正在尝试创建一个从 cmd 行执行 .jar 的流程构建器。我在 Windows 上运行得很好,但由于我不熟悉 mac 或 linux 的工作原理,所以我不知道他们的 cmd 行。

这是我的代码:

ProcessBuilder pb = new ProcessBuilder(new String[] { "java", "-jar", Settings.SAVE_DIR + Settings.SAVE_NAME});
            pb.directory(new File(System.getProperty("java.home") + File.separator + "bin"));
            final Process proc = pb.start();

谁能帮我找到 linux/mac 的 cmd 行?

【问题讨论】:

  • Settings.SAVE_DIRSettings.SAVE_NAME 的值是多少?
  • @Andreas SAVE_NAME = "name.jar"; SAVE_DIR = System.getProperty("user.home") + File.separator;
  • jar 文件实际上是在~/name.jar 吗?您的代码以什么方式不起作用?

标签: java linux macos processbuilder


【解决方案1】:

呃,为什么要使用进程构建器从 Java 中运行 Java 应用程序?

只要确保另一个 JAR 在你的类路径中;然后运行该 JAR 的“主要方法”。如果您担心分离;您仍然可以为此使用特殊的类加载器。

那么,为什么要绕道分叉你的 JVM?

关于您的实际问题:只需尝试首先手动构建您的命令。我的意思是:在 linux/mac 系统上打开一个 shell,然后输入你想到的命令行;并继续尝试,直到你让它工作。然后看那个;并确定以独立于平台的方式创建该事物的最简单方法。

【讨论】:

  • 使用反射来执行 main 方法对于我正在尝试执行的程序来说是错误的。 ClassLoader 似乎没有加载我正在执行的程序中的所有资源,而重写 loadResource 比我需要做的工作要多得多。
猜你喜欢
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 2015-09-23
相关资源
最近更新 更多