当前位置: 首页>>技术问答>>正文


如何在Ubuntu 16.04或更高版本上安装openjdk 7?

, ,

问题描述

我想将我的主系统升级到16.04,但是我的项目需要OpenJDK 7。

显然它不是一个简单的apt-get install openjdk-7-jdk。版本库中仅列出版本8和9。

任何人都可以指示我如何安装它?

最佳解决方法

我找到了以下适用于我的说明:

sudo add-apt-repository ppa:openjdk-r/ppa  
sudo apt-get update   
sudo apt-get install openjdk-7-jdk  

这将“PPA for OpenJDK uploads(restricted)”定义为附加的软件包存储库,更新您的信息并安装该软件包及其依赖项(来自该存储库)。

次佳解决方法

它看起来并不像openjdk-r /ppa的维护者将更新版本7u95-2.6.4-3以上的openjdk-7软件包。尽管如此,该软件包的描述“Debian GNU /Linux的Debian实验主要档案中复制”给我们提供了一条关于如何自己处理这个问题的线索。

选项1:手动安装

  1. 下载适用于您的架构的软件包:(对于大多数用户,这意味着如果64位为amd64,或者如果安装32位Ubuntu,则为i386)

  2. (尝试)使用dpkg安装软件包:

    sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*
    
  3. 检查dpkg的输出。如果存在依赖性问题 – 很可能 – 您会看到以下内容(用您的体系结构替代amd64):

    处理时遇到错误:openjdk-7-jre:amd64 openjdk-7-jre-headless:amd64 openjdk-7-jdk:amd64

    如果没有依赖性问题,那么很好,你完成了,跳到#4。否则,如果您需要解决一些依赖性问题,则使用以下方法处理:

    sudo apt install -f
    

    注意,让apt解决依赖关系后,不需要re-run dpkg。它会自动完成openjdk软件包的安装。

  4. 更新java的替代品。您可以使用update-java-alternatives --list查看所有已安装的java版本。要激活OpenJDK Java 1.7,请运行:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
    

    您可能会注意到有关IcedTeaPlugin.so插件不可用的错误。这对于使用JDK的开发人员来说并不是真正关心的问题。

  5. 验证Java正在工作:

    java -version
    

    应该输出类似于:

    Java版本”1.7.0_121″ OpenJDK运行环境(IcedTea 2.6.8)(7u121-2.6.8-1)OpenJDK 64位服务器虚拟机(构建24.121-b00,混合模式)

选项2:自动安装(包括使用apt更新)

Pinning可用于从Debian存储库安装和更新openjdk-7和libjpeg62-turbo(依赖项)。

  1. 安装Debian keyring:

    sudo apt install debian-archive-keyring
    
  2. 添加所需的存储库:

    sudo add-apt-repository 'deb http://httpredir.debian.org/debian experimental main'
    sudo add-apt-repository 'deb http://httpredir.debian.org/debian sid main'
    

    为什么不使用稳定的Debian存储库?您将遇到Debian稳定版不可满足的依赖关系。实验(对于openjdk-7)和sid(对于libjpeg62-turbo)存储库在依赖版本上更宽松。

  3. 创建一个钉住文件,告知apt只考虑我们感兴趣的软件包(我们当然不希望我们的整个Ubuntu发行版”upgraded”与Debian试验软件包一起使用)。

    用下面的内容创建文件/etc/apt/preferences.d/debian。您需要超级用户权限,因此请使用sudo vimsudo nanogksudo gedit等之一。

    Package: *
    Pin: release o=Debian,n=experimental
    Pin-Priority: -1
    
    Package: *
    Pin: release o=Debian,n=sid
    Pin-Priority: -1
    
    Package: openjdk-7-jdk
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: openjdk-7-jre-headless
    Pin: release o=Debian,n=experimental
    Pin-Priority: 500
    
    Package: libjpeg62-turbo
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: libfontconfig1
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
    Package: fontconfig-config
    Pin: release o=Debian,n=sid
    Pin-Priority: 500
    
  4. 更新apt缓存(从Debian的软件包列表来看,这需要一段时间):

    sudo apt update
    
  5. 安装openjdk-7-jdk:

    sudo apt install openjdk-7-jdk
    
  6. 更新java的替代品。您可以使用update-java-alternatives --list查看所有已安装的java版本。要激活OpenJDK Java 1.7,请运行:

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
    

    您可能会注意到有关IcedTeaPlugin.so插件不可用的错误。这对于使用JDK的开发人员来说并不是真正关心的问题。

  7. 验证Java正在工作:

    java -version
    

    应该输出类似于:

    Java版本”1.7.0_121″ OpenJDK运行环境(IcedTea 2.6.8)(7u121-2.6.8-1)OpenJDK 64位服务器虚拟机(构建24.121-b00,混合模式)

第三种解决方法

您可以从Azul下载适合您需求的OpenJDK 7。他们都有一个DEB(包系统)和一个ZIP分布。我只使用ZIP分发。

http://www.azul.com/downloads/zulu/zulu-linux/

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/659.html,未经允许,请勿转载。