8

我不确定为什么“ which java ”和“ whereis java ”路径不正确。我试图编辑 ~/.bash_profile 和 /etc/environment 但没有帮助。所需的路径是在下面的“ echo $JAVA_HOME ”中看到的,但同样没有反映在“ which java ”中

以下是我在 CentOS 6.4 中得到的:

哪个java

/usr/bin/java


java版本

java版本“1.7.0_45”

JAVA(TM) SE 运行时环境 (build 1.7.0_45-b18)

JAVA HotSpot (TM) 64 位服务器 VM(内部版本 24.45-b08,混合模式)


java在哪里

java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java


回声 $JAVA_HOME

/usr/java/jdk1.7.0_45/jre => 当 echo $JAVA_HOME 时需要显示正确


4

3 回答 3

9

您的 PATH(仅此而已)确定要查找命令的目录。在 Linux、Solaris 和 DOS 中也是如此。

当您执行which {command}它时,它会找到您可以在其中执行命令的第一个目录。

当您在 中更新 PATH 时.bashrc,您必须再次获取它以更改当前设置。

于 2013-10-19T15:39:24.103 回答
9

运行alternatives --config java以选择您要用作默认的 Java 版本。它将打印出可供选择的已安装 Java 列表。

which java但是,总是会打印出/usr/bin/java. 这并不意味着它设置错误!观察:

$ ls -l `which java`
lrwxrwxrwx 1 root root 22 Oct 19 11:49 /usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 35 Oct 19 11:49 /etc/alternatives/java -> /usr/lib/jvm/jre-1.5.0-gcj/bin/java

如果您使用alternatives更改 IcedTea 的路径,ls -l /etc/alternatives/java将反映这一点。

于 2013-10-19T15:45:25.450 回答
0

有时,通过选择所需的 java 版本,替代方案在单个命令中不起作用。虽然我不确定确切的原因..

我成了这种情况的受害者。自动驾驶失败了,我们现在必须手动飞行..

在您的 unix 安装中的以下两个文件中的任何一个中,添加以下变量和对 shell 脚本的调用(我在下面提供) -

~/.bashrc

export JAVA_HOME=/opt/jdk1.8.0_141
export PATH=$JAVA_HOME/bin:$PATH
sudo bash /appl/common/toFixJava.sh

或者

/etc/profile

export JAVA_HOME=/opt/jdk1.8.0_141
export PATH=$JAVA_HOME/bin:$PATH
sudo bash /appl/common/toFixJava.sh

上面引用的以下脚本将其余的 java 模块设置为利用您要使用的 java -

toFixJava.sh

altrs="java javac jre jarsigner javadoc javafxpackager javah javap java-rmi.cgi javaws jcmd jconsole jcontrol jdb jhat jinfo jmap jmc jmc.ini jps jrunscript jsadebugd jstack jstat jstatd jvisualvm keytool appletviewer apt ControlPanel extcheck idlj native2ascii orbd pack200 policytool rmic rmid rmiregistry schemagen serialver servertool tnameserv unpack200 wsgen wsimport xjc"

对于每个 $altrs 做

alternatives --install /usr/bin/$each $each /opt/jdk1.8.0_141/bin/$each <desired installation index number, e.g. 2>
alternatives --set $each /opt/jdk1.8.0_141/bin/$each

完毕

如果这对您不起作用,请务必告知。我会帮你解决的!

于 2017-07-22T18:32:36.667 回答