java - ProcessBuilder start() 方法在 eclipse/mac 中运行命令 (ffprobe)
问题描述
我已经在mac中安装了ffprobe,目录是/usr/local/bin/ffprobe。当我在终端中运行 ffprobe 命令时,它可以正常工作,但是当我通过 ProcessBuilder 在 eclipse 中运行它时,它不会运行并抛出异常Caused by: java.io.IOException: Cannot run program "ffprobe": error=2, No such file or directory.
但是,当我运行 ProcessBuilder 并给出 ffprobe 的绝对路径时,它可以正常工作。
工作代码:
sample args:[/usr/local/bin/ffprobe, -v, quiet, -print_format, json, -show_format, -show_streams, some_url]
ProcessBuilder pb = new ProcessBuilder(cmdArgs);
Process proc = pb.start();
但是,如果 args 是[ffprobe, -v, quiet, -print_format, json, -show_format, -show_streams, some_url]
它抛出错误。如何在不提供绝对路径的情况下运行 ffprobe 命令?我已经关注了这篇文章,但无法解决我的问题。
我在 Eclipse 中的 java 进程正在运行
Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/
解决方案
最后,我能够通过 Sakra 在这篇文章中提到的以下步骤解决这个问题:
- 在 /Applications/Eclipse.app/Contents/MacOS/ 创建 eclipse.sh
export ENV_VAR1=/usr/local/bin/ logger "`dirname \"$0\"`/eclipse" exec "`dirname \"$0\"`/eclipse" $@
chmod +x /Applications/Eclipse.app/Contents/MacOS/eclipse.sh
打开 Eclipse.app Info.plist 并将键 CFBundleExecutable 的值从 eclipse 更改为 eclipse.sh。
强制将 LaunchService 更新为
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app
推荐阅读
- javascript - Add dynamic overlays from array
- python - 我想使用 python 3.6 求解一个基于网络的微分方程系统
- javascript - React 中 refs 的实际用法是什么?
- sql - How can I split the product quantity based on a group quantity
- java - Mergesort 的这个合并函数是占用 O(1) 空间还是 O(n) 空间?
- python-3.x - 无法在 Windows 上的 Git Bash 中安装 pylint(Windows 应用商店)
- python - 无法导入名称 LoginView
- spring - 如何使用休息调用在一对一映射中更新父表时更新子表
- jsf - 菜单操作后在另一个页面中打开页面
- visual-studio-code - 用于 React 开发的 VSCode 远程服务器?