Java 8升级至Java 11后Maven编译及jaxb-runtime依赖路径警告求助
解决思路与方案
刚巧我之前升级Java 8到11时也碰到过类似的问题,给你分享下我当时的解决思路和具体方案:
1. 处理error_prone_core的非法反射访问警告
Java 9及以后版本收紧了反射访问权限,旧版本的error_prone_core可能会触发这类警告。你可以按以下两种方式解决:
- 升级error_prone_core到适配Java 11的版本:这是最稳妥的方案,比如升级到2.18.0及以上版本(具体可参考官方兼容说明),新版本已经修复了Java 11下的反射访问问题。
- 添加JVM参数允许反射访问:如果暂时不想升级,需要在Maven编译插件中添加
--add-opens参数,同时确保fork=true(因为必须启动新的编译进程才能传递JVM参数),示例配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <!-- 建议升级到支持Java 11的插件版本 --> <configuration> <release>11</release> <fork>true</fork> <compilerArgs> <!-- 根据警告提示的具体包路径添加对应参数,以下是常见的需要开放的包 --> <arg>--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg> <arg>--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg> <arg>--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg> </compilerArgs> </configuration> </plugin>
2. 解决jaxb-runtime的路径警告问题
你观察得没错,这个问题和Java版本无关,是jaxb-runtime-2.3.2本身的MANIFEST.MF文件里的Class-Path属性引用了不存在的JAR文件(比如jaxb-api.jar、jaxb-core.jar等),而Maven的依赖管理已经自动处理了这些依赖,所以实际运行不受影响,但会触发日志警告。解决方法如下:
- 替换为修复了该问题的jaxb-runtime版本:排除Hibernate Core引入的旧版本,手动添加2.3.3及以上的稳定版(这些版本已经移除了错误的
Class-Path配置),示例依赖配置:
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>你的Hibernate版本</version> <exclusions> <exclusion> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> </exclusion> </exclusions> </dependency> <!-- 手动添加修复后的jaxb-runtime --> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.6</version> <!-- 或更高的稳定版本 --> <scope>runtime</scope> </dependency>
- 临时隐藏警告(不推荐):如果暂时不想修改依赖,可以在日志配置中关闭该类警告,比如在
logback.xml中添加:
<logger name="org.springframework.boot.devtools.restart.classpath" level="ERROR" />
不过这只是掩盖问题,建议优先采用替换版本的方案。
3. 反馈渠道
如果确认是jaxb-runtime的问题,可以直接去它的官方代码仓库提交Issue,描述清楚你使用的版本、Maven环境、具体的警告信息;如果是Hibernate Core默认引入了有问题的旧版本,也可以去Hibernate的官方仓库反馈,建议他们升级依赖的jaxb-runtime版本。
内容的提问来源于stack exchange,提问作者Filip Procházka
相关产品推荐
相关产品推荐

