java - 如果从 OSX 应用程序包运行,ProcessBuilder 无法找到文件

标签 java macos processbuilder

我们的应用程序的 OSX 版本的 ProcessBuilder 遇到了一个奇怪的问题。当我们切换到universalJavaApplicationStub 时,这就开始了。之前我们使用了AppBundlerTask。 注意:无法创建示例类,因为您需要构建完整的 Mac 应用程序包才能看到此结果:

我们启动该过程的代码是:

log.debug("render: {}", Arrays.toString(myCommandLine.toArray()));
log.debug("render: dir={}", m_workingDir);
final ProcessBuilder processBuilder = new ProcessBuilder(myCommandLine);
processBuilder.directory(new File(m_workingDir));
final Process process = processBuilder.start();

日志输出如下所示:

render: [/Applications/EFI/Metrix/bin/cli/rasters, --saveasimg, --pagebox=MEDIABOX, --smoothing=All]
render: dir=/Applications/EFI/Metrix/bin/cli/

这导致栅格应用程序向日志抛出错误,表明该应用程序未从其安装目录运行。 (这是第二个日志行中的目录。)

看起来工作目录不是我在 processBuilder.directory() 调用中指定的目录。

谁能解释一下发生了什么?

最佳答案

通过与应用程序供应商合作,我现在需要在运行他们的应用程序之前执行“取消设置 CFProcessPath”。

关于java - 如果从 OSX 应用程序包运行,ProcessBuilder 无法找到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765829/

相关文章:

java - 默认表模型不显示新行

java - 在 Spring 3.2 中读取属性文件

java - 数据库中的 primefaces 图形图像未加载

node.js - Sublime text 找不到 Node.js。如何帮助 Sublime 正确找到 Node?

java - 使用 ProcessBuilder 通过命令行选项执行 python 脚本

java - 如何删除/重新启动到不稳定套接字服务器的客户端连接

C++ - 如何获取 C++ 可执行文件的当前目录?

macos - 给定一个 UTI(统一类型标识符),找出它符合的所有类型

Java ProcessBuilder如何捕获来自进程的文件读取请求并作为流提供?

java - 如何在没有回显连接的情况下编写这个特定命令?