无法让Eclipse使用位于mac os x上的$ PATH上的ProcessBuilder来识别二进制文件

时间:2018-02-16 17:12:07

标签: java eclipse macos eclipse-classpath

我刚刚切换到处理Mac,我正在尝试确定为什么我无法让Eclipse识别我尝试通过ProcessBuilder运行的二进制文件。

我尝试将其作为Java Application EclipseTestNG测试运行。

如果我使用java编译该类并直接从命令行运行它,它将工作,但不会通过Eclipse,这使我相信$PATH的配置未在我的TestNG中正确设置{1}}配置。

问题

我确信这是Eclipse中的一个配置问题,但是在搜索了一天并且发布后我想发布一些帮助。我试图在配置上设置$PATH,但它似乎不起作用。

谢谢

更新/回答

事实证明,我在下面显示的shell上设置的PATH与我使用下面的代码检查的Java不一样。在验证我然后在ProcessBuilder上添加了我的环境的正确路径并执行了答案中显示的脚本。

Map<String, String> env = processBuilder.environment();
        for (String key : env.keySet())
             System.out.println(key + ": " + env.get(key));

        Map<String, String> envs = processBuilder.environment();
        System.out.println("Path " + envs.get("PATH"));
        envs.put("PATH", "/usr/local/bin");
        System.out.println("PATH " + envs.get("PATH"));

代码

        File logsDir = new File(logDirectory);
        if (!logsDir.exists()) {
            logsDir.mkdirs();
        }

        // run process directly
        ProcessBuilder processBuilder = new ProcessBuilder();
        processBuilder.command("appium");

        processBuilder.redirectError(new File(logsDir, "appiumError.txt"));
        processBuilder.redirectOutput(new File(logsDir, "appiumOutput.txt"));

        process = processBuilder.start();

输出(找不到node来运行appium因此No such file or directory

Caused by: java.io.IOException: Cannot run program "appium": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at AppiumService.startAppium(AppiumService.java:77)

路径nodeappium的bin位于/ usr / local / bin中)

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:
/usr/local/opt/ant/bin:/usr/local/opt/maven/bin:
/usr/local/opt/gradle/bin

1 个答案:

答案 0 :(得分:1)

Eclipse可以显式设置java-process的PATH变量,而不包含您需要的路径。您可以使用相应目录的绝对路径调用该命令,也可以尝试使用shell通过使用

创建进程来启动该过程
processBuilder.command("/bin/sh", "-c", "appium");