ProcessBuilder的start()方法在eclipse / mac中运行命令(ffprobe)

时间:2018-06-08 21:59:08

标签: java eclipse processbuilder 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命令?我已经关注this post,但对我的问题无能为力。

我在eclipse中的java进程正在

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

1 个答案:

答案 0 :(得分:0)

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

  1. 在/Applications/Eclipse.app/Contents/MacOS/
  2. 创建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