使用alternatives替换jdk的版本
在centos安装jenkins时需要使用service jenkins start命令来启动。但运行这个命令时会报错,提示安装的jdk版本太低。
[root@rabbit-03-05 alternatives]# service jenkins start Starting Jenkins Jenkins requires Java5 or later, but you are running 1.4.2 from /usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre java.lang.UnsupportedClassVersionError: 48.0 at Main.main(Main.java:90) [ OK ]
但命令行中运行java -version却显示的是1.7.0版本。
[root@rabbit-03-05 alternatives]# java -version java version "1.7.0_05" Java(TM) SE Runtime Environment (build 1.7.0_05-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)
研究了一下终于找到解决办法了,即通过alternatives工具替换centos默认安装的jdk。
先简单介绍一下什么是alternative工具:
[root@rabbit-03-05 alternatives]# which alternatives /usr/sbin/alternatives [root@rabbit-03-05 alternatives]# alternatives alternatives version 1.3.30.2 - Copyright (C) 2001 Red Hat, Inc. This may be freely redistributed under the terms of the GNU Public License. usage: alternatives --install <link> <name> <path> <priority> [--initscript <service>] [--slave <link> <name> <path>]* alternatives --remove <name> <path> alternatives --auto <name> alternatives --config <name> alternatives --display <name> alternatives --set <name> <path> common options: --verbose --test --help --usage --version --altdir <directory> --admindir <directory>
OK,信息足够多了,下面使用alternatives把jdk换掉。先解压从网上下载的jdk1.7.0u5,放在/usr/lib/jvm/jdk1.7.0_05,然后看看安装前的信息:
[root@rabbit-03-05 jdk1.7.0_05]# alternatives --display java java - status is auto. link currently points to /usr/lib/jvm/jre-1.4.2-gcj/bin/java /usr/lib/jvm/jre-1.4.2-gcj/bin/java - priority 1420 slave jre: /usr/lib/jvm/jre-1.4.2-gcj slave jre_exports: /usr/lib/jvm-exports/jre-1.4.2-gcj slave keytool: /usr/lib/jvm/jre-1.4.2-gcj/bin/keytool slave rmiregistry: /usr/lib/jvm/jre-1.4.2-gcj/bin/rmiregistry Current `best' version is /usr/lib/jvm/jre-1.4.2-gcj/bin/java.
然后运行下面两条命令
[root@rabbit-03-05 jdk1.7.0_05]# alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_05/bin/java 300 [root@rabbit-03-05 jdk1.7.0_05]# alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_05/bin/javac 300
再运行display命令后,看到显示结果已经发生了变化:
[root@rabbit-03-05 jdk1.7.0_05]# alternatives --display java java - status is auto. link currently points to /usr/lib/jvm/jre-1.4.2-gcj/bin/java /usr/lib/jvm/jre-1.4.2-gcj/bin/java - priority 1420 slave keytool: /usr/lib/jvm/jre-1.4.2-gcj/bin/keytool slave rmiregistry: /usr/lib/jvm/jre-1.4.2-gcj/bin/rmiregistry slave jre_exports: /usr/lib/jvm-exports/jre-1.4.2-gcj slave jre: /usr/lib/jvm/jre-1.4.2-gcj /usr/lib/jvm/jdk1.7.0_05/bin/java - priority 300 slave keytool: (null) slave rmiregistry: (null) slave jre_exports: (null) slave jre: (null) Current `best' version is /usr/lib/jvm/jre-1.4.2-gcj/bin/java. [root@rabbit-03-05 jdk1.7.0_05]# alternatives --display javac javac - status is auto. link currently points to /usr/lib/jvm/java-1.4.2-gcj/bin/javac /usr/lib/jvm/java-1.4.2-gcj/bin/javac - priority 1420 slave jar: /usr/lib/jvm/java-1.4.2-gcj/bin/jar slave jarsigner: /usr/lib/jvm/java-1.4.2-gcj/bin/jarsigner slave javadoc: /usr/lib/jvm/java-1.4.2-gcj/bin/javadoc slave javah: /usr/lib/jvm/java-1.4.2-gcj/bin/javah slave rmic: /usr/lib/jvm/java-1.4.2-gcj/bin/rmic slave java_sdk_exports: /usr/lib/jvm-exports/java-1.4.2-gcj slave java_sdk: /usr/lib/jvm/java-1.4.2-gcj /usr/lib/jvm/jdk1.7.0_05/bin/javac - priority 300 slave jar: (null) slave jarsigner: (null) slave javadoc: (null) slave javah: (null) slave rmic: (null) slave java_sdk_exports: (null) slave java_sdk: (null) Current `best' version is /usr/lib/jvm/java-1.4.2-gcj/bin/javac.
现在可以把配置替换到新的jdk上去了,运行alternatives --config <name>
[root@rabbit-03-05 jdk1.7.0_05]# alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- *+ 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java 2 /usr/lib/jvm/jdk1.7.0_05/bin/java Enter to keep the current selection[+], or type selection number: 2 [root@rabbit-03-05 jdk1.7.0_05]# alternatives --config javac There are 2 programs which provide 'javac'. Selection Command ----------------------------------------------- *+ 1 /usr/lib/jvm/java-1.4.2-gcj/bin/javac 2 /usr/lib/jvm/jdk1.7.0_05/bin/javac Enter to keep the current selection[+], or type selection number: 2
运行完毕后,新的jdk就切换到1.7上了,运行命令
[root@rabbit-03-05 jdk1.7.0_05]# service jenkins start Starting Jenkins [ OK ]
完毕。