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

Java ProcessBuilder start()方法在eclipse/mac中运行命令(ffprobe),java,eclipse,processbuilder,ffprobe,Java,Eclipse,Processbuilder,Ffprobe,我已经在mac中安装了ffprobe,目录是/usr/local/bin/ffprobe。当我在终端中运行ffprobe命令时,它工作正常,但当我通过ProcessBuilder在eclipse中运行它时,它不会运行并引发异常,原因是:java.io.IOException:无法运行程序“ffprobe”:error=2,没有这样的文件或目录。 但是,当我运行ProcessBuilder给出ffprobe的绝对路径时,它工作得很好 工作代码: sample args:[/usr/local/bi

我已经在mac中安装了ffprobe,目录是/usr/local/bin/ffprobe。当我在终端中运行ffprobe命令时,它工作正常,但当我通过ProcessBuilder在eclipse中运行它时,它不会运行并引发异常,原因是:java.io.IOException:无法运行程序“ffprobe”:error=2,没有这样的文件或目录。 但是,当我运行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\u format,json,-show\u format,-show\u streams,some\u url]

它抛出错误。如何在不提供绝对路径的情况下运行ffprobe命令?我已经跟进了,但在我的问题上无能为力

我在eclipse中的java进程运行在

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

最后,我通过Sakra在post中提到的以下步骤解决了这个问题:

  • 在/Applications/eclipse.app/Contents/MacOS/
  • chmod+x/Applications/Eclipse.app/Contents/MacOS/Eclipse.sh

  • 打开Eclipse.app Info.plist并将键CbundleExecutable的值从Eclipse更改为Eclipse.sh

  • 强制将启动服务更新为

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


  • 愚蠢的问题,但是
    /usr/local/bin/
    是否位于Java进程的
    路径中(除非您是从命令行运行,否则不适用于您的终端)是的。我也可以在eclipse终端中运行ffprobe命令。当我在java代码中打印ffprobe的路径时,它清楚地显示了/usr/local/bin/ffprobe
    
    export ENV_VAR1=/usr/local/bin/
    logger "`dirname \"$0\"`/eclipse"
    exec "`dirname \"$0\"`/eclipse" $@