gpt4 book ai didi

java - OSX 上 Eclipse 中的环境变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:57 26 4
gpt4 key购买 nike

我已经导入了执行以下命令的某个库

Runtime.getRuntime().exec("svd");

现在在我的 bash shell 中,我可以执行 svd,因为它指向已安装的文件夹“/usr/local/bin/svd”。然而,我的 java 程序无法执行“svd”并且 eclipse 返回错误“无法运行程序”svd“:错误 = 2,没有这样的文件或目录”

我在 eclipse 的运行配置中将以下内容添加到我的环境变量中。

$PATH = /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin/svd
svd = /usr/local/bin/svd

但是 eclipse 仍然说它无法运行程序“svd”。除了手动写入完整路径之外,还有什么方法可以解决这个问题吗?

e.g Runtime.getRuntime().exec("/usr/local/bin/svd");

最佳答案

不能运行svd程序的不是eclipse,而是jvm,因为它在系统上找不到svd的路径。

你应该把你的 svd 程序放在 $PATH 变量上,这样当 JVM 运行你的程序并发现对 svd 的调用时,它应该知道这个 svd 程序在哪里位于它可以调用它的位置。

有关如何在 OSX 上配置 $PATH 变量,请查看此处:Setting environment variables in OS X?

我还注意到您使用 Runtime 在您的 java 程序中运行外部程序。这是在 java 中运行外部程序的一种古老方式。您应该考虑改用 ProcessBuilder。它更加灵活,现在被认为是运行外部程序的最佳选择:

ProcessBuilder pb = new ProcessBuilder("svd");
Process p = pb.start();
//You could also read the error stream, so that when svd is not correctly set on the running system, you may alert the user.
BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
}

int retCode = p.waitFor();
if(retCode == 2){
//alert the user that svd is not correctly set on PATH variable.
LOGGER.error(sb);
System.out.println("ERROR!! Could not run svd because it's not correctly set on PATH variable");
}

关于java - OSX 上 Eclipse 中的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26353640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com