2011-06-24 98 views
0

我已经安装了java的Ubuntu 10.10。我能够从任何文件夹执行java命令。我认为可能是因为我设置了Java Classpath。但是JAVA_HOME和CLASSPATH都没有设置。关于ubuntu中的java和环境变量的简单问题

如果我看看/ etc/environment内容,我可以看到PATH被设置为/ usr/bin /(等等)。由于'which java'返回/ usr/bin/java,这就是我可以从任何地方执行java的原因吗?如果没有,为什么呢?

+0

这可能更适合于[Unix.StackExchange](http://unix.stackexchange.com/)或[Ask Ubuntu](http://askubuntu.com/) –

回答

3

您可以执行java,因为该命令在您的路径上。

echo $PATH 

将向您显示搜索哪些目录,以查找特定程序的顺序。由于/usr/bin在你的路上,所以当你输入java时,它最终会看到/usr/bin/java。请注意,在许多系统中,这是一个符号链接(指向另一个文件的文件),因此/usr/bin/java通常指向/etc/alternatives/java(它也是指向真实可执行文件的符号链接)。

环境变量JAVA_HOME开始起作用的工具和程序检查JAVA_HOME并采取行动,而不是依靠路径。在大多数现代Linux系统中,替代子系统所做的工作取代了早期(更成问题)的技术。也就是说,你可能想要设置JAVA_HOME,如果你遇到需要它的工具。

为什么JAVA_HOME不像它可能会那么受欢迎的一个原因是要访问JAVA_HOME需要运行一个shell,而不是每个人都想在shell命令中包装每个Java项目。

+0

所以答案是YES,谢谢! ! – de3

+1

@ de3,是的,答案是肯定的。抱歉忘记解释中的明显答案。 –

1

是的,如果java二进制文件(或其链接)位于路径上列出的文件夹中,则可以在不指定路径的情况下执行java(例如/usr/local/java/latest/bin/java -jar x.jar) JAVA_HOME和CLASSPATH无关与系统路径。 JAVA_HOME允许其他软件(或脚本)知道在哪里查找Java安装。 CLASSPATH告诉java在哪里寻找类(编译.java文件产生的.class文件)。