TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 模板代码

    • 各类组件
    • 通用模板
  • 国产化&其他系统

    • Centos系列
    • Kylin系列
    • OpenEuler系列
    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 定制开发

    • 组件版本定制
    • 样式风格定制
  • 蓝图愿景
  • 技术支持
  • 合作共建
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 模板代码

    • 各类组件
    • 通用模板
  • 国产化&其他系统

    • Centos系列
    • Kylin系列
    • OpenEuler系列
    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 定制开发

    • 组件版本定制
    • 样式风格定制
  • 蓝图愿景
  • 技术支持
  • 合作共建
GitHub (opens new window)
  • Hadoop

  • Spark

  • Trino

  • Hudi

    • javax.annotation.Nullable 缺失
      • 🧩 错误成因详解
      • 🔧 解决方案:POM 添加显式依赖
        • 📸 POM 修改位置截图:
      • ✅ 重新编译验证
        • 📸 编译成功截图:
    • 缺失 everit-json-schema 依赖
  • Paimon

  • Livy

  • Flink

  • Atlas

  • Superset

  • Jsvc

  • Zookeeper

  • Hive

  • 报错解决-Bigtop
  • Hudi
JaneTTR
2022-12-18
目录

javax.annotation.Nullable 缺失

在 Hudi 1.0.1 项目中执行以下构建命令时:

mvn clean compile \
  -DskipTests \
  -Dcheckstyle.skip=true \
  -Dhadoop.version=3.3.4
1
2
3
4

你可能会遇到如下错误:

# 🧨 编译失败错误日志

[INFO] ----------------------< org.apache.hudi:hudi-io >-----------------------
[INFO] Building hudi-io 1.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[WARNING] The artifact org.slf4j:slf4j-log4j12:jar:2.0.7 has been relocated to org.slf4j:slf4j-reload4j:jar:2.0.7
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ hudi-io ---
[INFO]
[INFO] --- maven-enforcer-plugin:3.0.0-M1:enforce (enforce-maven-version) @ hudi-io ---
[INFO]
[INFO] --- maven-enforcer-plugin:3.0.0-M1:enforce (enforce-logging) @ hudi-io ---
[INFO]
[INFO] --- protobuf-maven-plugin:0.6.1:compile (compile-protoc) @ hudi-io ---
[INFO] Compiling 1 proto file(s) to /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/target/generated-sources/protobuf/java
[INFO]
[INFO] --- maven-remote-resources-plugin:1.5:process (process-resource-bundles) @ hudi-io ---
[WARNING] While downloading org.slf4j:slf4j-log4j12:2.0.7
  This artifact has been relocated to org.slf4j:slf4j-reload4j:2.0.7.


[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ hudi-io ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/resources
[INFO] Copying 1 resource
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ hudi-io ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 54 source files to /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[22,24] cannot find symbol
  symbol:   class Nullable
  location: package javax.annotation
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/io/ByteBufferBackedInputStream.java:[21,24] cannot find symbol
  symbol:   class Nonnull
  location: package javax.annotation
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[152,37] cannot find symbol
  symbol:   class Nullable
  location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[156,37] cannot find symbol
  symbol:   class Nullable
  location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[169,47] cannot find symbol
  symbol:   class Nullable
  location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[169,18] cannot find symbol
  symbol:   class Nullable
  location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[173,47] cannot find symbol
  symbol:   class Nullable
  location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[181,37] cannot find symbol
  symbol:   class Nullable
  location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/io/ByteBufferBackedInputStream.java:[67,20] cannot find symbol
  symbol:   class Nonnull
  location: class org.apache.hudi.common.util.io.ByteBufferBackedInputStream
[INFO] 9 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  15.830 s
[INFO] Finished at: 2025-04-22T01:42:42Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project hudi-io: Compilation failure: Compilation failure:
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[22,24] cannot find symbol
[ERROR]   symbol:   class Nullable
[ERROR]   location: package javax.annotation
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/io/ByteBufferBackedInputStream.java:[21,24] cannot find symbol
[ERROR]   symbol:   class Nonnull
[ERROR]   location: package javax.annotation
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[152,37] cannot find symbol
[ERROR]   symbol:   class Nullable
[ERROR]   location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[156,37] cannot find symbol
[ERROR]   symbol:   class Nullable
[ERROR]   location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[169,47] cannot find symbol
[ERROR]   symbol:   class Nullable
[ERROR]   location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[169,18] cannot find symbol
[ERROR]   symbol:   class Nullable
[ERROR]   location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[173,47] cannot find symbol
[ERROR]   symbol:   class Nullable
[ERROR]   location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/StringUtils.java:[181,37] cannot find symbol
[ERROR]   symbol:   class Nullable
[ERROR]   location: class org.apache.hudi.common.util.StringUtils
[ERROR] /opt/modules/bigtop/dl/hudi-release-1.0.1/hudi-io/src/main/java/org/apache/hudi/common/util/io/ByteBufferBackedInputStream.java:[67,20] cannot find symbol
[ERROR]   symbol:   class Nonnull
[ERROR]   location: class org.apache.hudi.common.util.io.ByteBufferBackedInputStream
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
(base) [root@centos1 hudi-io]#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

# 🧨 编译失败错误截图(Cannot find symbol)

编译失败

报错核心内容

多个 Java 源文件中使用了 @Nullable 和 @Nonnull 注解,但 Maven 构建系统提示:找不到 javax.annotation 中的类定义。这意味着依赖未被正确引入或已被排除。


# 🧩 错误成因详解

这个问题不是 JDK 或 IDE 的锅,而是 依赖冲突+传递排除 的组合问题:

  1. Hudi 源码中使用了 javax.annotation.Nullable 和 javax.annotation.Nonnull 注解(见 StringUtils.java 等类);
  2. 在未显式指定 Hadoop 版本的情况下,Hudi 依赖的是 2.x 系列,其 transitively(传递)引入了正确的 annotation-api;
  3. 但当我们手动使用 -Dhadoop.version=3.3.4 指定了 Hadoop 3.x,Maven 引入了 hadoop-common 的新版本 —— 而该版本中:
    • 明确 排除了 javax.annotation-api;
    • 并且未主动引入其他兼容包;
  4. 最终编译器找不到注解类,抛出 cannot find symbol。

提示

虽然你使用的是 OpenJDK 8,默认仍支持 javax.annotation.*,但这部分内容不再被系统默认提供,而是依赖外部包管理。


# 🔧 解决方案:POM 添加显式依赖

修改模块 hudi-io/pom.xml,添加如下配置:


<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
    <scope>compile</scope>
    <optional>false</optional>
</dependency>

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
<exclusions>
    <exclusion>
        <groupId>javax.annotation</groupId>
        <artifactId>javax.annotation-api</artifactId>
    </exclusion>
</exclusions>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

笔记

强制添加 javax.annotation-api 依赖,并对 hadoop-common 传递依赖进行排除,可避免冲突与覆盖。

# 📸 POM 修改位置截图:

pom修改


# ✅ 重新编译验证

修改后再次运行:

mvn clean compile -DskipTests -Dcheckstyle.skip=true -Dhadoop.version=3.3.4
1

此时构建日志输出如下:

# 📸 编译成功截图:

编译成功

BUILD SUCCESS 表明所有源文件成功编译,问题已修复。
#Hudi#编译#Java#Hadoop 3.x
GLIBC 与 GLIBCXX 版本过低
缺失 everit-json-schema 依赖

← GLIBC 与 GLIBCXX 版本过低 缺失 everit-json-schema 依赖→

最近更新
01
Pandoc 缺失导致 SparkR 构建失败
06-08
02
Cyrus SASL/GSASL 缺失解决
06-07
03
Hadoop_3.3.4 编译实战 1.0.0+
06-06
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式