彻底解决 openSUSE 下的 java 开发环境

背景

使用了 openSUSE 13.1, 13.2, 42.1 三个版本,每次都要折腾一遍 JAVA 环境。
这次把过程记录下来,以免下次再耗费时间。

发行版信息:

1
2
3
4
5
6
> lsb_release -a
LSB Version: n/a
Distributor ID: SUSE LINUX
Description: openSUSE Leap 42.1 (x86_64)
Release: 42.1
Codename: n/a

OpenJDK

由于 Oracle 的授权许可,openSUSE 官方软件源不再提供 Oracle Java.
所以自从 openSUSE 12.1 开始,系统预装的是 OpenJDK.
而 openSUSE 42.1 中 openJDK 1.7 和 1.8 都有,其中 1.8 为默认版本。

1
2
3
4
5
6
7
> java -version
openjdk version "1.8.0_72"
OpenJDK Runtime Environment (build 1.8.0_72-b15)
OpenJDK 64-Bit Server VM (build 25.72-b15, mixed mode)
> javac
If 'javac' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf javac

如果基本不开发 JAVA 程序或者只需要编译运行几个小程序的话,凑合着用用也行。
然而 javac 找不到是什么情况,不急,安装两个包就好了。
在 software management 中安装 java-1_7_0-openjdk-devel 以及 java-1_8_0-openjdk-devel 两个包即可。

1
2
> javac -version
javac 1.8.0_72

Oracle JDK

当然,有的时候还不得不需要 Oracle JDK 来开发一些项目,步骤如下:

下载安装 Oracle JDK

点击 Oracle Java 下载页面,根据自己操作系统的位数选择对应的RPM包。我下载的是 jdk-8u73-linux-x64.rpm
下载完成后安装该RPM软件包:sudo rpm -ivh jdk-8u73-linux-x64.rpm
安装目录这里是:/usr/java/jdk1.8.0_73

如果你安装的jdk版本和我的不同(一般是小版本号不同),请酌情替换上述以及之后的命令中的相应参数。

修改环境变量 JAVA_HOME

1
2
3
4
> vim ~/.bashrc     // 添加下面一行
export JAVA_HOME=/usr/java/jdk1.8.0_73
// 保存退出
> source ~/.bashrc

安装 alternatives

安装了java alternative 和 javac alternative 后,可以很方便的在不同 Java 版本之间切换。

1
2
> sudo /usr/sbin/update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk1.8.0_73/bin/java" 40
> sudo /usr/sbin/update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/jdk1.8.0_73/bin/javac" 40

配置 alternatives

1
2
> sudo /usr/sbin/update-alternatives --config java      // 选择相应版本
> sudo /usr/sbin/update-alternatives --config javac // 选择相应版本

验证

1
2
3
4
5
6
> java -version
java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)
> javac -version
javac 1.8.0_73

浏览器 Java plugin

不推荐将浏览器的 Java 插件换成 Oracle 的,因为在 Java8u20 以及更新版本中,只允许有证书的Java程序运行。
这就意味着一些浏览器上的 Java 程序无法运行。

当然如果坚持将浏览器的 Java 插件换成 Oracle 的,步骤如下:

1
2
> sudo /usr/sbin/update-alternatives --install "/usr/lib64/browser-plugins/javaplugin.so" "javaplugin" "/usr/java/jdk1.8.0_73/jre/lib/amd64/libnpjp2.so" 40
> sudo /usr/sbin/update-alternatives --config javaplugin //选择相应版本

后记

虽然能用了,但还是觉得没有弄透彻,openSUSE 和其他的发行版还真不一样。
不管了,以后遇到问题再补充。搭好环境明天了解 GAE JAVA 的部署。

参考

[1] 官方文档
[2] 牛牛博客的一篇文章