无法使用位于 mac os x 上的 $PATH 上的 ProcessBuilder 使 Eclipse 识别二进制文件
Unable to get Eclipse to recognize binaries using ProcessBuilder located on $PATH on mac os x
我刚刚切换到 mac 上工作,我正在尝试确定为什么我无法 Eclipse
识别我正在尝试 运行 的二进制文件ProcessBuilder
.
我已经尝试 运行 它作为 Eclipse
中的 Java Application
和 TestNG
测试。
如果我用 java
和 运行 直接从命令行编译 class 它会工作,但不能通过 Eclipse,这让我相信 $PATH
在我的 TestNG
配置中设置不正确。
问题
我确信这是 Eclipse 中的一个配置问题,但在搜索了一天之后,我想 post 寻求一些帮助。我已尝试在配置中设置 $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();
Output(它找不到 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)
Path(node
和 appium
的 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
java-process 的 PATH 变量可能由 Eclipse 显式设置,不包含您需要的路径。您可以使用相应目录的绝对路径调用该命令,或者您可以尝试使用 shell 通过使用
创建进程来启动进程
processBuilder.command("/bin/sh", "-c", "appium");
我刚刚切换到 mac 上工作,我正在尝试确定为什么我无法 Eclipse
识别我正在尝试 运行 的二进制文件ProcessBuilder
.
我已经尝试 运行 它作为 Eclipse
中的 Java Application
和 TestNG
测试。
如果我用 java
和 运行 直接从命令行编译 class 它会工作,但不能通过 Eclipse,这让我相信 $PATH
在我的 TestNG
配置中设置不正确。
问题
我确信这是 Eclipse 中的一个配置问题,但在搜索了一天之后,我想 post 寻求一些帮助。我已尝试在配置中设置 $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();
Output(它找不到 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)
Path(node
和 appium
的 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
java-process 的 PATH 变量可能由 Eclipse 显式设置,不包含您需要的路径。您可以使用相应目录的绝对路径调用该命令,或者您可以尝试使用 shell 通过使用
创建进程来启动进程processBuilder.command("/bin/sh", "-c", "appium");