如何为JVM设置PATH环境变量

3

我正在尝试使用Java 7的ProcessBuilder运行已安装在我的系统上的可执行文件。我注意到,环境变量PATH可以通过

 System.getenv("PATH");

它不包括我的自定义路径设置。它返回以下内容:
 /usr/bin:/bin:/usr/sbin:/sbin

我的路径看起来像这样:

 /Users/saschaf/.bin:/Users/saschaf/Entwicklung/spring-roo-1.2.4.RELEASE/bin:/usr/local/opt/ruby/bin:/usr/local/bin:/Users/saschaf/Entwicklung/android-sdk-macosx/tools:/Users/saschaf/Entwicklung/android-sdk-macosx/platform-tools:/usr/local/share/npm/bin:/Users/saschaf/node_modules/.bin:/Users/saschaf/Entwicklung/git/tools:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

我不知道如何设置PATH变量以便JVM使用正确的变量。这里有什么问题吗?

我正在运行最新的OS X Mavericks,JDK 1.7.0_25-b15和Maven Apache Maven 3.1.1。


2
我更喜欢通过绝对路径执行程序,而不是将它们放入您的PATH或从程序中设置PATH。 - akluth
2个回答

1
您可以将您的shell的$PATH作为命令行参数传递:
$ java -DPATH=$PATH -cp

您可以使用此 example 来检查您的环境。

1
直接从文档中得到:
你可以在不设置PATH变量的情况下运行JDK,或者您可以选择将其设置为方便。但是,如果您想能够在任何目录中运行可执行文件(如javac、java、javadoc等)而无需键入命令的完整路径,则应设置路径变量。如果您没有设置PATH变量,则需要每次运行时指定可执行文件的完整路径,例如:
% /usr/local/jdk1.7.0/bin/javac MyClass.java

要查找路径是否正确设置,请执行以下操作:

% java -version

这将打印Java工具的版本,如果能找到的话。如果版本过旧或出现错误java: Command not found,则路径未正确设置。
要永久设置路径,请在启动文件中设置路径。
对于C shell(csh),编辑启动文件(~/.cshrc):
set path=(/usr/local/jdk1.7.0/bin )

对于bash,编辑启动文件(~/.bashrc):

PATH=/usr/local/jdk1.7.0/bin:
export PATH

对于ksh,启动文件的名称由环境变量ENV命名。要设置路径:

PATH=/usr/local/jdk1.7.0/bin:
export PATH

对于 sh,编辑配置文件(~/.profile):

PATH=/usr/local/jdk1.7.0/bin:
export PATH

请加载启动文件并验证路径是否设置正确,方法是重复执行Java命令:

这就是我尝试过的。据我所知,OS X使用.bash_profile来设置环境变量,但我也尝试过.bashrc和.profile,但都没有成功。我希望我的同事们都能使用他们现有的PATH设置,但这可能不太可能。目前,我已经在我的IDE中配置了PATH变量,并建议我的同事们也这样做。 - s.froehlich
是的,它可以是任何Bash启动文件--/.bashrc、/.bash_profile、~/.profile。在IDE中设置它可能是最快的方法,但除非您提供绝对路径,否则它不会在IDE之外起作用。出于同样的原因,建议在bash启动文件中设置这些变量。 - Ashish
如果您觉得我的回答有帮助,请不要忘记点赞或接受。 - Ashish
在bash启动文件中设置PATH是不可能的,我们已经这样做了。我注意到另一件事:在我设置运行配置的路径后,我必须重新启动IntelliJ IDEA 12 - 很奇怪。 - s.froehlich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接