Java 9模块环境下JAXB运行时异常问题咨询
解决Java 9模块适配的JAXB相关异常
我来帮你搞定这个Java 9模块的问题~你遇到的异常大概率是因为用了废弃的java.se.ee模块,加上Java 9对Java EE组件(比如JAXB)的模块化调整导致的,咱们一步步来修正:
核心问题分析
java.se.ee模块已废弃:Java 9里java.se.ee是一个聚合模块,它包含了java.se和所有Java EE相关模块,但这个模块已经被标记为废弃,而且从Java 10开始会被彻底移除,同时重复添加java.se和java.se.ee很容易引发模块冲突。- JAXB已从默认模块中移出:Java 9开始,JAXB这类Java EE功能不再默认包含在系统模块里,需要显式指定要添加的对应模块。
修正后的运行命令
把原来的命令改成这样:
java --add-modules java.xml.bind -cp mainjar.jar:jaxb-api.jar:jaxb-impl.jar:jaxb-core.jar foo.bar.Launcher
为什么这么改?
- 去掉了冗余且废弃的
java.se.ee,只保留需要的java.xml.bind模块(这是JAXB对应的系统模块) - 你用到的
jaxb-api.jar、jaxb-impl.jar这些旧版JAR包,Java 9会把它们识别为自动模块,类路径上的自动模块会和显式添加的系统模块自动协同工作,不用额外配置模块名 - 这样的配置也能平滑过渡到Java 10+,避免后续升级时因为
java.se.ee被移除再次出问题
如果还是有异常,可以检查一下你的代码里有没有直接引用Java EE模块的内部类,或者确认JAR包的版本是否和Java 9兼容,但按这个调整应该能解决大部分模块冲突问题~
内容的提问来源于stack exchange,提问作者Robert K
相关产品推荐
相关产品推荐

