我们的应用程序的 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/