Java 如何在 CentOS 上安装 jdk7?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/23208930/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 21:20:31  来源:igfitidea点击:

How to install jdk7 on CentOS?

java

提问by ggkmath

I'm trying to install jdk7 on my CentOS 6.5 machine. Actually, I thought I already did this 6 months ago but when I type java -versionI see javac 1.6.0_30.

我正在尝试在我的 CentOS 6.5 机器上安装 jdk7。实际上,我以为我在 6 个月前就已经这样做了,但是当我输入时,java -version我看到javac 1.6.0_30.

I've downloaded jdk-7u25-linux-x64.tar.gz, verified checksum, then extracted to /home/username/java/jdk7u25/jdk1.7.0_25.

我已经下载了 jdk-7u25-linux-x64.tar.gz,校验和,然后解压到 .tar.gz /home/username/java/jdk7u25/jdk1.7.0_25

Then I edited my .bash_profilefile, which includes:

然后我编辑了我的.bash_profile文件,其中包括:

...
export JAVA_PATH=$JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin
...
export PATH=$PATH:$JRE_HOME/bin

when I type source .bash_profilethen java -versionI still see the same 1.6 version noted above. Anyone know what else needs to be done?

当我输入source .bash_profile,然后java -version我仍看到相同的1.6版本,上面提到的。有谁知道还需要做什么?

采纳答案by Chase

You should only be editing your PATHif you have to install a personal copy of Java. If you are going that route then you need to make sure that the bindirectory of your preferred version of Java is at the beginning of your PATH, like so:

PATH如果您必须安装 Java 的个人副本,您应该只编辑您的。如果你要走那条路,那么你需要确保bin你喜欢的 Java 版本的目录在你的开头PATH,像这样:

export JAVA_PATH=$JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
export PATH=$JRE_HOME/bin:$PATH

But the better way to handle this is to install Java and use the alternativescommand. If you can get by with OpenJDK you could just try:

但处理这个问题的更好方法是安装 Java 并使用该alternatives命令。如果您可以使用 OpenJDK,您可以尝试:

yum install java-1.7.0-openjdk
yum install java-1.7.0-openjdk-devel

As OpenJDK is installed it will run the alternativescommand to correctly configure everything. If you want to use the Oracle JDK then you can use either the RPM or the tar.gz, the RPM installed in /usr/javawhile the tar.gz should probably be extracted to that directory or another non-user specific directory like /opt/javaor something. Personally I'd recommend the RPMs so install would be something like:

安装 OpenJDK 后,它将运行alternatives命令以正确配置所有内容。如果您想使用 Oracle JDK,那么您可以使用 RPM 或 tar.gz,其中安装了 RPM,/usr/java而 tar.gz 可能应该解压缩到该目录或其他非用户特定目录,例如/opt/java或其他。我个人推荐 RPM,因此安装将类似于:

yum localinstall jdk-8u5-linux-x64.rpm
yum localinstall jdk-8u5-linux-x64-demos.rpm

After install comes the alternativescommand however most people and docs get lazy (look at the CentOS wiki page that the other answer points to for an example of what I mean by lazy). You really should use the alternativescommand to setup not only javaand javacbut also all the other commands that come with Java AND the man pages for those commands. You should run like:

安装后会出现alternatives命令,但是大多数人和文档都会变得懒惰(查看另一个答案指向的 CentOS wiki 页面,以了解我所说的“懒惰”的含义)。你真的应该使用alternatives命令来设置不仅javajavac,而且全部都使用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 \

That is my example for JDK 8 but if you swap out the jdk=line for your path that will come close but there are a couple of new commands that come with 8 and one that was dropped from 8 so some slight adjustments would be needed if you really wanted to install 7. Also note the 1800005number. With the alternativescommand the higher number is the default selection and OpenJDK 7u55 uses 170055. If you pick a number lower than the number used by whatever OpenJDK you have installed you'll need to run alternatives --config javaand alternatives --config javac.

这是我的 JDK 8 示例,但是如果您换出jdk=将接近的路径的行,但是有几个新命令随 8 一起出现,一个从 8 中删除,因此如果您真的需要一些细微的调整想安装 7. 还要注意1800005数量。使用该alternatives命令,较高的数字是默认选择,OpenJDK 7u55 使用 170055。如果您选择的数字低于您安装的任何 OpenJDK 使用的数字,则需要运行alternatives --config javaalternatives --config javac

After running the alternativescommands you want to update you man page keyword database by running makewhatis.

运行alternatives命令后,您要通过运行更新您的手册页关键字数据库makewhatis

Then you might want to install the Java plugin for your Firefox:

那么你可能想为你的 Firefox 安装 Java 插件:

ln -s /usr/java/jdk1.8.0_05/jre/lib/amd64/libnpjp2.so /usr/lib64/mozilla/plugins/

Then you'd want to add the Java Control Panel to your System->Preferences menu and setup JARs to be double-clicked on:

然后您想将 Java 控制面板添加到您的系统->首选项菜单并设置要双击的 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

If it wasn't clear, you'd do all this as root. If you don't have rootthen just use the tar.gz version and fix your PATH. I wrote a little bit more detail at http://blog.osdev.org/java/2014/04/22/jdk-alternatives.html

如果不清楚,您可以将所有这些都作为root. 如果您没有,root那么只需使用 tar.gz 版本并修复您的PATH. 我在http://blog.osdev.org/java/2014/04/22/jdk-alternatives.html写了更多细节

回答by Andrii Liubimov

You probably has link in /usr/bin/java to your another java installation directory.

您可能在 /usr/bin/java 中有指向另一个 java 安装目录的链接。

Check thereabout alternativesin CentOS

检查关于替代于CentOS