我不确定为什么“ 哪个java ”和“ whereis java ”路径不正确。我试图编辑〜/ .bash_profile和/ etc / environment但没有帮助。所需的路径在下面的“ echo $ JAVA_HOME ”中可以看到,但“ 哪个java ”
中没有反映出来的路径以下是我在CentOS 6.4中的内容:
哪个java
的/ usr / bin中/ JAVA
java -version
java版“1.7.0_45”
JAVA(TM)SE运行时环境(版本1.7.0_45-b18)
JAVA HotSpot(TM)64位服务器VM(内置24.45-b08,混合模式)
whereis 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
时,所需的显示正确答案 0 :(得分:9)
您的PATH(以及其他任何内容)确定要查找命令的目录。在Linux,Solaris和DOS中也是如此。
执行which {command}
时,它会找到您可以执行命令的第一个目录。
当您在.bashrc
更新PATH时,您必须再次使用它来更改当前设置。
答案 1 :(得分:8)
运行alternatives --config java
以选择要用作默认值的Java版本。它将打印出已安装的Javas列表供您选择。
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
将反映出来。
答案 2 :(得分: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
OR
/ 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
完成
如果这对您不起作用,请告诉我们。我会帮你解决!