在 OpenSUSE 上安装 Java 8 JDK - 更新替代方案

mrU*_*rik 4 opensuse java software-installation zypper jdk

我在许多 OpenSUSE 论坛上搜索了这个问题的答案,但到目前为止我还没有找到。长话短说,从 Oracle 为 JDK 安装 RPM 时,我收到以下信息:

> sudo zypper install jdk-8u111-linux-x64.rpm
[sudo] password for root:
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
  jdk1.8.0_111

1 new package to install.
Overall download size: 158.3 MiB. Already cached: 0 B. After the operation, additional 258.5 MiB will be used.
Continue? [y/n/? shows all options] (y): y
Retrieving package jdk1.8.0_111-2000:1.8.0_111-fcs.x86_64           (1/1), 158.3 MiB (258.5 MiB unpacked)
Checking for file conflicts: ......................................................................[done]
(1/1) Installing: jdk1.8.0_111-2000:1.8.0_111-fcs.x86_64 ..........................................[done]
Additional rpm output:
Unpacking JAR files...
    tools.jar...
    plugin.jar...
    javaws.jar...
    deploy.jar...
    rt.jar...
    jsse.jar...
    charsets.jar...
    localedata.jar...
update-alternatives: using /usr/java/jdk1.8.0_111/jre/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: error: alternative ControlPanel can't be slave of javac: it is a slave of java
warning: %post(jdk1.8.0_111-2000:1.8.0_111-fcs.x86_64) scriptlet failed, exit status 2
Run Code Online (Sandbox Code Playgroud)

请原谅我的冗长程度,我只是想让你看到我所看到的。这是全新安装的 OpenSUSE Tumbleweed。

我还尝试将它安装在 OpenSUSE Leap 42.2 上并进行全新安装。在我第一次尝试之后,我在没有任何 Java 支持(没有 OpenJDK)的情况下重新加载,从头开始,就像我完成这个安装一样。我专门按照在 OpenSUSE 上安装 Java 的指南进行操作。没有安装 Java 的、之前安装了 Java OpenJDK 的、同时安装了 JDK 和 JRE 的,等等。

为了记录,Java 本身正在运行,但显然控制面板没有。我尝试手动使用更新替代方案,尝试从头开始编译,重新加载,从 Leap 切换到 Tumbleweed。以下是一些可能有用的其他信息:

> sudo update-alternatives --list java
/usr/java/jdk1.8.0_111/jre/bin/java
> sudo update-alternatives --config java
There is only one alternative in link group java (providing /usr/bin/java): /usr/java/jdk1.8.0_111/jre/bin/java
Nothing to configure.
> java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
> javac -version
javac 1.8.0_111
Run Code Online (Sandbox Code Playgroud)

再次,我可以看到 Java 正在运行。但我仍然想了解为什么这很容易重现以及如何解决它。

小智 6

执行此安装的过程比大多数人想象的要容易,令人惊讶的是,关于如何执行此操作的好的或直接的信息并不多。上面的答案是正确的,但有些元素有点过时了。

  1. 下载 Oracle JDK 1.8.0_151

    #// rpm Installation Oracle JDK 1.8.0_151
    wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.rpm
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行安装命令

    #// installation command
    rpm -ivh jdk-8u151-linux-x64.rp
    
    Run Code Online (Sandbox Code Playgroud)
  3. 验证版本是否已根据您的喜好配置/安装

    java -version
    
    Run Code Online (Sandbox Code Playgroud)
  4. 使用命令行界面或编辑器设置环境变量

    #//Command line 
    export JAVA_HOME=/usr/java/jdk1.8.0_151/
    export PATH=$PATH:/usr/java/jdk1.8.0_151/bin
    
    #// set variables at the END of the file etc/profile
    sudo vim /etc/profile/
    
    #//Variables to set within the file
    JAVA_HOME=/usr/java/jdk1.8.0_151
    PATH=$Path:$HOME/bin:@JAVA_HOME/bin
    export JAVA_HOME
    export PATH
    
    #//To save / exit vim execute the following key strokes
    <ESC>
    <:>
    <x>
    
    Run Code Online (Sandbox Code Playgroud)