关于ubuntu中java和环境变量的简单问题

时间:2011-06-24 18:09:13

标签: java variables ubuntu environment

我已经安装了java的Ubuntu 10.10。我能够从任何文件夹执行java命令。我想这可能是因为我设置了java Classpath。但是JAVA_HOME和CLASSPATH都没有被设置。

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

2 个答案:

答案 0 :(得分: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不尽如人意的一个原因是访问JAVA_HOME您需要运行shell,而不是每个人都想在shell命令中包装每个Java项目。

答案 1 :(得分:1)

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