我正在尝试在我的CentOS 6.5计算机上安装jdk7。实际上,我认为我已经在6个月前做过这个,但是当我输入java -version
时,我看到javac 1.6.0_30
。
我已经下载了jdk-7u25-linux-x64.tar.gz,经过验证的校验和,然后提取到/home/username/java/jdk7u25/jdk1.7.0_25
。
然后我编辑了我的.bash_profile
文件,其中包括:
...
export JAVA_PATH=$JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin
...
export PATH=$PATH:$JRE_HOME/bin
当我输入source .bash_profile
然后java -version
时,我仍然看到上面提到的相同的1.6版本。任何人都知道还有什么需要做的吗?
答案 0 :(得分:7)
如果您必须安装Java的个人副本,则应该只编辑PATH
。如果您要走这条路线,那么您需要确保首选Java版本的bin
目录位于PATH
的开头,如下所示:
export JAVA_PATH=$JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
export PATH=$JRE_HOME/bin:$PATH
但处理此问题的更好方法是安装Java并使用alternatives
命令。如果你可以使用OpenJDK,你可以尝试:
yum install java-1.7.0-openjdk
yum install java-1.7.0-openjdk-devel
安装OpenJDK后,它将运行alternatives
命令来正确配置所有内容。如果您想使用Oracle JDK,那么您可以使用RPM或tar.gz,安装在/usr/java
中的RPM,而tar.gz可能应该提取到该目录或其他非用户特定目录,如/opt/java
或其他什么。我个人推荐使用RPM,所以安装会像:
yum localinstall jdk-8u5-linux-x64.rpm
yum localinstall jdk-8u5-linux-x64-demos.rpm
安装后出现了alternatives
命令但是大多数人和文档变得懒惰(请查看另一个答案指向的CentOS维基页面,以获取我所说的懒惰的例子)。您确实应该使用alternatives
命令不仅设置java
和javac
,还要设置Java附带的所有其他命令以及这些命令的手册页。你应该运行:
jdk=/usr/java/jdk1.8.0_05
jre=$jdk/jre
alternatives \
--install /usr/bin/java java $jre/bin/java 180005 \
--slave /usr/lib/jvm/jre jre $jre \
--slave /usr/bin/keytool keytool $jre/bin/keytool \
--slave /usr/bin/orbd orbd $jre/bin/orbd \
--slave /usr/bin/pack200 pack200 $jre/bin/pack200 \
--slave /usr/bin/rmid rmid $jre/bin/rmid \
--slave /usr/bin/rmiregistry rmiregistry $jre/bin/rmiregistry \
--slave /usr/bin/servertool servertool $jre/bin/servertool \
--slave /usr/bin/tnameserv tnameserv $jre/bin/tnameserv \
--slave /usr/bin/unpack200 unpack200 $jre/bin/unpack200 \
--slave /usr/bin/javaws javaws $jre/bin/javaws \
--slave /usr/bin/jjs jjs $jre/bin/jjs \
--slave /usr/share/man/man1/java.1 java.1 \
$jdk/man/man1/java.1 \
--slave /usr/share/man/man1/keytool.1 keytool.1 \
$jdk/man/man1/keytool.1 \
--slave /usr/share/man/man1/orbd.1 orbd.1 \
$jdk/man/man1/ordb.1 \
--slave /usr/share/man/man1/pack200.1 pack200.1 \
$jdk/man/man1/pack200.1 \
--slave /usr/share/man/man1/rmid.1 rmid.1 \
$jdk/man/man1/rmid.1 \
--slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 \
$jdk/man/man1/rmiregistry.1 \
--slave /usr/share/man/man1/servertool.1 servertool.1 \
$jdk/man/man1/servertool.1 \
--slave /usr/share/man/man1/tnameserv.1 tnameserv.1 \
$jdk/man/man1/tnameserv.1 \
--slave /usr/share/man/man1/unpack200.1 unpack200.1 \
$jdk/man/man1/unpack200.1 \
--slave /usr/share/man/man1/javaws.1 javaws.1 \
$jdk/man/man1/javaws.1 \
--slave /usr/share/man/man1/jjs.1 jjs.1 \
$jdk/man/man1/jjs.1
alternatives \
--install /usr/lib/jvm/jre-1.8.0 \
jre_1.8.0 $jre 180005 \
alternatives \
--install /usr/bin/javac javac $jdk/bin/javac 180005 \
--slave /usr/lib/jvm/java java_sdk $jdk \
--slave /usr/bin/appletviewer appletviewer $jdk/bin/appletviewer \
--slave /usr/bin/extcheck extcheck $jdk/bin/extcheck \
--slave /usr/bin/idlj idlj $jdk/bin/idlj \
--slave /usr/bin/jar jar $jdk/bin/jar \
--slave /usr/bin/jarsigner jarsigner $jdk/bin/jarsigner \
--slave /usr/bin/javadoc javadoc $jdk/bin/javadoc \
--slave /usr/bin/javafxpackager javafxpackager $jdk/bin/javafxpackager \
--slave /usr/bin/javah javah $jdk/bin/javah \
--slave /usr/bin/javap javap $jdk/bin/javap \
--slave /usr/bin/jcmd jcmd $jdk/bin/jcmd \
--slave /usr/bin/jconsole jconsole $jdk/bin/jconsole \
--slave /usr/bin/jdb jdb $jdk/bin/jdb \
--slave /usr/bin/jdeps jdeps $jdk/bin/jdeps \
--slave /usr/bin/jhat jhat $jdk/bin/jhat \
--slave /usr/bin/jinfo jinfo $jdk/bin/jinfo \
--slave /usr/bin/jmap jmap $jdk/bin/jmap \
--slave /usr/bin/jmc jmc $jdk/bin/jmc \
--slave /usr/bin/jps jps $jdk/bin/jps \
--slave /usr/bin/jrunscript jrunscript $jdk/bin/jrunscript \
--slave /usr/bin/jsadebugd jsadebugd $jdk/bin/jsadebugd \
--slave /usr/bin/jstack jstack $jdk/bin/jstack \
--slave /usr/bin/jstat jstat $jdk/bin/jstat \
--slave /usr/bin/jstatd jstatd $jdk/bin/jstatd \
--slave /usr/bin/jvisualvm jvisualvm $jdk/bin/jvisualvm \
--slave /usr/bin/native2ascii native2ascii $jdk/bin/native2ascii \
--slave /usr/bin/policytool policytool $jdk/bin/policytool \
--slave /usr/bin/rmic rmic $jdk/bin/rmic \
--slave /usr/bin/schemagen schemagen $jdk/bin/schemagen \
--slave /usr/bin/serialver serialver $jdk/bin/serialver \
--slave /usr/bin/wsgen wsgen $jdk/bin/wsgen \
--slave /usr/bin/wsimport wsimport $jdk/bin/wsimport \
--slave /usr/bin/xjc xjc $jdk/bin/xjc \
--slave /usr/share/man/man1/appletviewer.1 appletviewer.1 \
$jdk/man/man1/appletviewer.1 \
--slave /usr/share/man/man1/extcheck.1 extcheck.1 \
$jdk/man/man1/extcheck.1 \
--slave /usr/share/man/man1/idlj.1 idlj.1 \
$jdk/man/man1/idlj.1 \
--slave /usr/share/man/man1/jar.1 jar.1 \
$jdk/man/man1/jar.1 \
--slave /usr/share/man/man1/jarsigner.1 jarsigner.1 \
$jdk/man/man1/jarsigner.1 \
--slave /usr/share/man/man1/javac.1 javac.1 \
$jdk/man/man1/javac.1 \
--slave /usr/share/man/man1/javadoc.1 javadoc.1 \
$jdk/man/man1/javadoc.1 \
--slave /usr/share/man/man1/javafxpackager.1 javafxpackager.1 \
$jdk/man/man1/javafxpackager.1 \
--slave /usr/share/man/man1/javah.1 javah.1 \
$jdk/man/man1/javah.1 \
--slave /usr/share/man/man1/javap.1 javap.1 \
$jdk/man/man1/javap.1 \
--slave /usr/share/man/man1/jcmd.1 jcmd.1 \
$jdk/man/man1/jcmd.1 \
--slave /usr/share/man/man1/jconsole.1 jconsole.1 \
$jdk/man/man1/jconsole.1 \
--slave /usr/share/man/man1/jdb.1 jdb.1 \
$jdk/man/man1/jdb.1 \
--slave /usr/share/man/man1/jdeps.1 jdeps.1 \
$jdk/man/man1/jdeps.1 \
--slave /usr/share/man/man1/jhat.1 jhat.1 \
$jdk/man/man1/jhat.1 \
--slave /usr/share/man/man1/jinfo.1 jinfo.1 \
$jdk/man/man1/jinfo.1 \
--slave /usr/share/man/man1/jmap.1 jmap.1 \
$jdk/man/man1/jmap.1 \
--slave /usr/share/man/man1/jmc.1 jmc.1 \
$jdk/man/man1/jmc.1 \
--slave /usr/share/man/man1/jps.1 jps.1 \
$jdk/man/man1/jps.1 \
--slave /usr/share/man/man1/jrunscript.1 jrunscript.1 \
$jdk/man/man1/jrunscript.1 \
--slave /usr/share/man/man1/jsadebugd.1 jsadebugd.1 \
$jdk/man/man1/jsadebugd.1 \
--slave /usr/share/man/man1/jstack.1 jstack.1 \
$jdk/man/man1/jstack.1 \
--slave /usr/share/man/man1/jstat.1 jstat.1 \
$jdk/man/man1/jstat.1 \
--slave /usr/share/man/man1/jstatd.1 jstatd.1 \
$jdk/man/man1/jstatd.1 \
--slave /usr/share/man/man1/jvisualvm.1 jvisualvm.1 \
$jdk/man/man1/jvisualvm.1 \
--slave /usr/share/man/man1/native2ascii.1 native2ascii.1 \
$jdk/man/man1/native2ascii.1 \
--slave /usr/share/man/man1/policytool.1 policytool.1 \
$jdk/man/man1/policytool.1 \
--slave /usr/share/man/man1/rmic.1 rmic.1 \
$jdk/man/man1/rmic.1 \
--slave /usr/share/man/man1/schemagen.1 schemagen.1 \
$jdk/man/man1/schemagen.1 \
--slave /usr/share/man/man1/serialver.1 serialver.1 \
$jdk/man/man1/serialver.1 \
--slave /usr/share/man/man1/wsgen.1 wsgen.1 \
$jdk/man/man1/wsgen.1 \
--slave /usr/share/man/man1/wsimport.1 wsimport.1 \
$jdk/man/man1/wsimport.1 \
--slave /usr/share/man/man1/xjc.1 xjc.1 \
$jdk/man/man1/xjc.1
alternatives \
--install /usr/lib/jvm/java-1.8.0 \
java_sdk_1.8.0 $jdk 180005 \
这是我的JDK 8示例,但是如果你为你的路径换掉了jdk=
行,那么会有一些新的命令带来8和一个从8中删除所以有些如果您真的想要安装,则需要进行微调。另请注意1800005
号码。使用alternatives
命令,较大的数字是默认选择,OpenJDK 7u55使用170055.如果您选择的数字低于您安装的任何OpenJDK使用的数字,则需要运行alternatives --config java
和alternatives --config javac
。
运行alternatives
命令后,您希望通过运行makewhatis
来更新手册页关键字数据库。
然后你可能想为你的Firefox安装Java插件:
ln -s /usr/java/jdk1.8.0_05/jre/lib/amd64/libnpjp2.so /usr/lib64/mozilla/plugins/
然后,您想要将Java控制面板添加到System-> Preferences菜单中,并设置JAR以进行双击:
/bin/cp -fr /usr/java/jdk1.8.0_05/jre/lib/desktop/* /usr/share/
/bin/cp -fr /usr/java/jdk1.8.0_05/jre/lib/desktop/icons/hicolor/* /usr/share/icons/System
/usr/bin/gtk-update-icon-cache -f /usr/share/icons/System
/usr/bin/update-desktop-database
如果不清楚,您可以root
完成所有这些操作。如果您没有root
,那么只需使用tar.gz版本并修复PATH
即可。我在http://blog.osdev.org/java/2014/04/22/jdk-alternatives.html
答案 1 :(得分:0)
您可能在/ usr / bin / java中链接到另一个java安装目录。
在CentOS中查看there 替代