温馨提示×

ubuntu编译java缺包怎么解

小樊
81
2026-10-04 10:21:42
栏目: 编程语言

在 Ubuntu 上编译 Java 时提示“缺包(package does not exist / cannot find symbol)”是很常见的问题,通常原因和解决办法如下:


一、先确认是哪种“缺包”

1. JDK 自带包缺失(如 javax.*、java.*)

一般是因为:

  • 没装 JDK,只装了 JRE
  • 用的是 Java 11+,但代码用了被移除的模块(如 javax.xml.bind)

✅ 解决:

sudo apt update
sudo apt install default-jdk
java -version
javac -version

如果是 Java 11+ 缺 javax.xml.bind 等:

sudo apt install libjaxb-java

编译时加:

javac -cp /usr/share/java/jaxb-impl.jar Main.java

2. 第三方依赖包缺失(如 org.apache.*、com.google.*)

这是最常见的情况。

✅ 解决方式有三种:

方式一:手动下载 jar 并指定 classpath

javac -cp .:lib/xxx.jar Main.java

运行:

java -cp .:lib/xxx.jar Main

⚠️ Linux 用 : 分隔,不是 ;


方式二:用 Maven(推荐)

sudo apt install maven

项目结构:

pom.xml
src/main/java/...

编辑 pom.xml 添加依赖,然后:

mvn compile

Maven 会自动下载并管理包。


方式三:用 Gradle

sudo apt install gradle

build.gradle 里写依赖,然后:

gradle build

二、常见错误示例与解决

❌ 错误

error: package org.apache.commons.lang3 does not exist

✅ 解决

sudo apt install libcommons-lang3-java
javac -cp /usr/share/java/commons-lang3.jar Main.java

Ubuntu 很多常见 Java 包都能 apt 安装,命名一般是:

libxxx-java

三、快速排查清单 ✅

  • [ ] 是否装了 JDK(不是 JRE)
  • [ ] 是否用了 javac,不是 java
  • [ ] 第三方包是否用 -cp 指定
  • [ ] Java 版本是否和代码匹配
  • [ ] 是否该用 Maven / Gradle

如果你愿意,可以把:

  • 报错完整信息
  • Java 版本
  • 用的命令

贴出来,我可以直接帮你定位是哪一个包、怎么装。

0 踩