You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下Maven无法识别已安装的默认Oracle JDK,如何修改安装行为?

解决Ubuntu安装Maven时自动安装default-jre的问题

首先提个小细节:你解压的是Oracle JDK 1.8.0_141,但在update-alternatives命令里用的路径是jdk1.8.0_05,这应该是笔误吧?先把这个路径修正过来,否则后续可能出现隐性问题,执行以下命令调整:

sudo update-alternatives --remove java /opt/jdk/jdk1.8.0_05/bin/java
sudo update-alternatives --remove javac /opt/jdk/jdk1.8.0_05/bin/javac
sudo update-alternatives --install /usr/bin/java java /opt/jdk/jdk1.8.0_141/bin/java 100
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk/jdk1.8.0_141/bin/javac 100

回到你的核心问题:为什么apt-get装Maven时还要装default-jre?因为Ubuntu的包管理系统(dpkg/apt)是基于已注册的deb包来检查依赖的,你手动解压的Oracle JDK并没有被dpkg记录,所以apt认为系统缺少Java运行时环境,就会自动安装default-jre来满足Maven的依赖。下面提供两种可靠的解决方法:

方法一:用虚拟deb包“欺骗”apt

我们可以创建一个虚拟的deb包,让系统认为default-jre已经安装,这样apt就不会再尝试安装它:

  1. 先安装创建虚拟包的工具:
sudo apt-get install equivs
  1. 生成一个默认的控制文件:
equivs-control default-jre-stub
  1. 编辑这个控制文件(用nano或你习惯的编辑器),修改成类似下面的内容(注意版本号和架构要匹配你的系统):
Package: default-jre
Version: 2:1.8-58ubuntu2  # 可以用`apt-cache show default-jre`查看系统默认版本
Provides: java-runtime, java8-runtime, default-jre
Depends: 
Architecture: amd64  # 32位系统改成i386
Description: Stub package to satisfy default-jre dependency for Oracle JDK
  1. 构建虚拟deb包:
equivs-build default-jre-stub
  1. 安装这个虚拟包:
sudo dpkg -i default-jre_*.deb

现在再执行sudo apt-get install maven,apt就不会再要求安装default-jre了。

方法二:让系统完全识别你的Oracle JDK

如果你希望系统把Oracle JDK当作官方的Java环境来对待,可以将它注册到update-java-alternatives系统中:

  1. 在/usr/lib/jvm/目录下创建一个配置文件:
sudo nano /usr/lib/jvm/.java-8-oracle.jinfo
  1. 写入以下内容(所有路径替换成你的JDK实际路径):
name=java-8-oracle
alias=java-8-oracle
priority=100
section=non-free

hl java /opt/jdk/jdk1.8.0_141/bin/java
hl javac /opt/jdk/jdk1.8.0_141/bin/javac
hl javaws /opt/jdk/jdk1.8.0_141/bin/javaws
hl jexec /opt/jdk/jdk1.8.0_141/jre/lib/jexec
hl jar /opt/jdk/jdk1.8.0_141/bin/jar
hl jps /opt/jdk/jdk1.8.0_141/bin/jps
hl jstack /opt/jdk/jdk1.8.0_141/bin/jstack
hl jmap /opt/jdk/jdk1.8.0_141/bin/jmap
hl jhat /opt/jdk/jdk1.8.0_141/bin/jhat
hl jstat /opt/jdk/jdk1.8.0_141/bin/jstat
hl javah /opt/jdk/jdk1.8.0_141/bin/javah
hl javap /opt/jdk/jdk1.8.0_141/bin/javap
hl jdb /opt/jdk/jdk1.8.0_141/bin/jdb
hl rmic /opt/jdk/jdk1.8.0_141/bin/rmic
hl keytool /opt/jdk/jdk1.8.0_141/bin/keytool
hl jarsigner /opt/jdk/jdk1.8.0_141/bin/jarsigner
hl native2ascii /opt/jdk/jdk1.8.0_141/bin/native2ascii
hl javadoc /opt/jdk/jdk1.8.0_141/bin/javadoc
  1. 设置这个JDK为系统默认:
sudo update-java-alternatives --set java-8-oracle
  1. 验证配置是否生效:
update-java-alternatives --list

输出应该会显示java-8-oracle为默认选项。

最后,建议你把JAVA_HOME环境变量配置到系统级,确保Maven能正确找到Java:
编辑/etc/environment文件:

sudo nano /etc/environment

添加一行:

JAVA_HOME="/opt/jdk/jdk1.8.0_141"

保存后执行source /etc/environment让配置立即生效。

内容的提问来源于stack exchange,提问作者Buddhika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:17:13