【问题标题】:ProcessBuilder start() method to run command (ffprobe) in eclipse/macProcessBuilder start() 方法在 eclipse/mac 中运行命令 (ffprobe)
【发布时间】:2018-11-19 00:03:43
【问题描述】:

我已经在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 命令?我已经关注this post,但无法解决我的问题。

我在eclipse中的java进程运行在

Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/

【问题讨论】:

  • 愚蠢的问题,但是/usr/local/bin/ 在 Java 进程的 PATH 中(不适用于您的终端,除非您从命令行运行)
  • 是的。我也可以在 Eclipse 终端中运行 ffprobe 命令。当我在java代码中打印ffprobe的路径时,它清楚地显示/usr/local/bin/ffprobe

标签: java eclipse processbuilder ffprobe


【解决方案1】:

最后,我能够通过 Sakra 在this 帖子中提到的以下步骤解决此问题:

  1. 在 /Applications/Eclipse.app/Contents/MacOS/ 创建 eclipse.sh
export ENV_VAR1=/usr/local/bin/
logger "`dirname \"$0\"`/eclipse"
exec "`dirname \"$0\"`/eclipse" $@
  1. chmod +x /Applications/Eclipse.app/Contents/MacOS/eclipse.sh

  2. 打开 Eclipse.app Info.plist 并将键 CFBundleExecutable 的值从 eclipse 更改为 eclipse.sh。

  3. 强制将 LaunchService 更新为

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 2020-03-08
    • 1970-01-01
    相关资源
    最近更新 更多