就像描述的那样这里适用于 OS X 10.8 and 这里适用于 OS X 10.7唯一完整的解决方案是设置您的PATH
in /etc/launchd.conf
.
默认情况下PATH
对于应用程序设置为/usr/bin:/bin:/usr/sbin:/sbin
,即使你这样做not have a /etc/launchd.conf
at all.
因此,您必须在终端中执行以下操作:
sudo vi /etc/launchd.conf
并添加以下行或修改它(如果已存在):
setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
重要的:现在轮到你need重新启动你的Mac!
您可以重现您的PATH
在您的 Java 应用程序中使用以下代码:
public class Main {
public static void main (String[] args) {
System.out.println("PATH=" + System.getenv().get("PATH"));
}
}
还有第二种解决方案,如果您从 Eclipse 等 IDE 中启动程序,您也可以在那里设置 PATH。在 Eclipse 中你可以通过以下方式做到这一点Run | Run Configurations | Environment
在左侧栏上选择启动配置时Java Application
.
我确实用以下代码重现了它image.jpg
位于${user.dir}
又名 Java 应用程序启动的当前目录。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Main {
public static void main (String[] args) {
System.out.println("PATH=" + System.getenv().get("PATH"));
try {
Process exec = Runtime.getRuntime().exec("identify image.jpg");
InputStream is = exec.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
System.out.println(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行上面的代码后,您应该得到类似的输出:
PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
image.jpg JPEG 690x518 690x518+0+0 8-bit sRGB 152KB 0.000u 0:00.000
第一行输出显示您的PATH
对于您现在运行的 Java 应用程序。
第二条输出线来自identify image.jpg
.
注意:我运行的是 Mac OS X 10.8.2 和 MacPorts 2.1.3
注意:在 Mac OS X 10.8 之前,有一种方法可以按用户群设置全局变量:~/.MacOSX/environment.plist
。但从 Mountain Lion(又名 Mac OS X 10.8)开始,这不再有效。详细信息可以在这里查看:
- https://apple.stackexchange.com/questions/57385/where-are-system-environment-variables-set-in-mountain-lion