原因和简单介绍

我有一些代码使用JAXB API类,它们是作为Java 6/7/8中JDK的一部分提供的。当我使用Java 9+运行相同的代码时,在运行时我得到错误,指示无法找到JAXB类。
自Java 6以来,JAXB类已作为JDK的一部分提供,为什么Java 9不再能够找到这些类?
使用Java 8构建将使您的代码编译为yes,但是当尝试在Java 9+上运行该编译代码时,它将失败,因为JAX-B不存在。
正如之前关于Java 11的一切内容中看到的那样,它不再支持Java EE模块。Java 11删除了对 java.xml.bind- 它定义了XML绑定的Java体系结构 (JAXB)API的支持
Java 11包javax.xml.bind不再存在。
Java 7版本:包含和工作
Java 8版本:包含和工作
Java 9版本:已弃用
Java 10版:已弃用
Java 11版本:已删除

SEVERE: StandardWrapper.Throwable
java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not presentat java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117)at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125)at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)at java.base/sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:68)at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:138)at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)at java.base/sun.reflect.generics.repository.ClassRepository.computeSuperInterfaces(ClassRepository.java:117)at java.base/sun.reflect.generics.repository.ClassRepository.getSuperInterfaces(ClassRepository.java:95)at java.base/java.lang.Class.getGenericInterfaces(Class.java:1138)at com.sun.jersey.core.reflection.ReflectionHelper.getClass(ReflectionHelper.java:533)at com.sun.jersey.core.reflection.ReflectionHelper.getClass(ReflectionHelper.java:529)at com.sun.jersey.core.spi.factory.ContextResolverFactory.getParameterizedType(ContextResolverFactory.java:202)at com.sun.jersey.core.spi.factory.ContextResolverFactory.init(ContextResolverFactory.java:89)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:801)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)at org.apache.catalina.startup.Catalina.start(Catalina.java:695)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:566)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBContextat org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1328)at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)at java.base/java.lang.Class.forName0(Native Method)at java.base/java.lang.Class.forName(Class.java:398)at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114)... 59 more

解决方案

为了解决此问题,需要手动将以下JAXB Maven依赖项添加到项目中。

适当的长期解决方案:(JDK 9及更高版本)

<!--  jaxb模块引用 - start--><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId></dependency><dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-impl</artifactId><version>2.3.0</version></dependency><dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>2.3.0</version></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency><!-- jaxb模块引用 - end -->

将每个模块的JDK版本都修改到JDK8版本以下


参考链接:
https://stackoverflow.com/questions/43574426/how-to-resolve-java-lang-noclassdeffounderror-javax-xml-bind-jaxbexception-in-j
参考链接:
https://crunchify.com/java-11-and-javax-xml-bind-jaxbcontext/

运行SpringBoot时:Type javax.xml.bind.JAXBContext not present相关推荐

  1. 错误:Type javax.xml.bind.JAXBContext not present

    错误:Type javax.xml.bind.JAXBContext not present 具体错误信息 错误原因: 从jdk9开始采用了模块化的理念,促使JAXB默认没有加载 解决方案: jaxb ...

  2. 问题:使用jdk11 报错:java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present

    问题 程序执行报错:本地使用的jdk11java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present 详 ...

  3. java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present解决方案

    因为JAXB-API是java ee的一部分,在jdk9中没有在默认的类路径中: java ee api在jdk中还是存在的,默认没有加载而已,jdk9中引入了模块的概念,可以使用 模块命令–add- ...

  4. Spring学习记录-Java 11运行eureka-server报javax.xml.bind.JAXBContext not present错

    在pom.xml加入依赖就行 <dependency><groupId>org.glassfish.jaxb</groupId><artifactId> ...

  5. 如何解决java.lang.NoClassDefFoundError:Java 9中的javax / xml / bind / JAXBException

    本文翻译自:How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9 I have s ...

  6. java.lang.ClassNotFoundException:javax.xml.bind.DatatypeConverter【解决办法】

    遇到的问题 java.lang.ClassNotFoundException:javax.xml.bind.DatatypeConverter 原因:这有可能是因为SpringBoot项目结合jwt进 ...

  7. `Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter

    在执行java包时,遇到了Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter 错误. 原因是因为 ...

  8. Caused by java.lang.ClassNotFoundException javax.xml.bind.ValidationException异常

    一.问题描述 Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException at java.base/ja ...

  9. javax.xml.bind.UnmarshalException: 意外的元素 (uri:, local:xml)。所需元素为(none)

    将xml转换为object时候报错:javax.xml.bind.UnmarshalException: 意外的元素 (uri:"", local:"xml") ...

最新文章

  1. HDF5数据处理(一)python
  2. 计算机等级考试初级网络工程师,计算机等级网络工程师考试内容
  3. POJ 3436 ACM Computer Factory(最大流+路径输出)
  4. LeetCode 168. Excel Sheet Column Title
  5. java中序列化的serialVersionUID解释
  6. apk转换ipa在线转换工具_PDF 格式转换在线网站
  7. C++简易测试代码框架
  8. 将组策略编辑器添加到控制面板
  9. vs code的tabs模式的终端
  10. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEM...
  11. SzNOI语法百题之总目录
  12. 微信小程序制作表格代码
  13. 增值税相关软件基本常识
  14. c语言简单的图案设计,分形艺术图案设计
  15. App Store Connect 如何删除应用App
  16. oracle表空间temp表空间满了,Oracle temp表空间爆满的处理方法
  17. 关于腾讯应用宝上架的应用版本回退的问题
  18. kotlin写的加解密算法,包括模式和填充方式
  19. PHP正则验证手机号
  20. 对比分析OSG与Cesium中模型LOD的异同

热门文章

  1. envoy重试_具有Envoy代理的微服务模式,第二部分:超时和重试
  2. jboss项目导入idea_如何导入任何JBoss BRMS示例项目
  3. autowired_@Autowired所有的东西!
  4. 后端 java ee_刷新器-Java EE 7后端十大功能
  5. rest服务swagger_在Java EE 7上骑骆驼–带有Swagger文档的REST服务
  6. 数据库 测试数据生成_测试数据生成器和对象母亲:另一种外观
  7. unity ppr_智能自动PPR更改事件策略
  8. IDE日志分析方法pt。 2
  9. 使用AWS Lambdas扩展技术堆栈
  10. JSON合并补丁:JSON-P 1.1概述系列