添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

升级了jdk9之后,项目中写单点登录过程中报出了这个错误。

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
	at io.jsonwebtoken.impl.Base64Codec.decode(Base64Codec.java:26)
	at io.jsonwebtoken.impl.DefaultJwtBuilder.signWith(DefaultJwtBuilder.java:99)
	at com.mszlu.blog.utils.JWTUtils.createToken(JWTUtils.java:20)
	at com.mszlu.blog.utils.JWTUtils.main(JWTUtils.java:40)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
	... 4 more

解决方法有两种:

  1. 在pom.xml引入jar包
    在这里插入图片描述
<dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>
  1. 将jdk版本降低到1.6/1.7/1.8
嗯,老项目,升级classpath,升级gradle版本,出现了这个问题。 我解决这个问题的办法,就是去注释掉,classpath引入的,以及app下的build.gradle引入的插件,因为它是秒出的,没有到下载依赖包部分,所以可以排除文件冲突之类的。 经过我注释,发现是walle渠道打包引入的 apply plugin: 'walle' 它引入了一个classpath以及一个依赖包,经过我对比,发现他们版本号不一样,上github看了官方文档,把版本号改成一致就行了。可能新版编译更加严格吧,以往老编译器都是可以运行的。 出现这个问题的话,需要先找到引起这个问题的配置,可以用注释的方法 是由于缺少jaxb-api包导致的。在Java 8以及以前的版本,是默认包含jaxb这个jar包的;但是在java SE 9.0就不再包含着个包了,如果使用则需要手动引进。降低JDK版本到1.8。 在本地运行的很好,但是打包成jar包后运行,加载出首页后点击登录,就会报如下错误 Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter at io.jsonwebtoken.impl.Base64Codec.decode(Base64Codec.java:26) at io.jsonwebtoken.impl.DefaultJwtBuilder.signWith(DefaultJwtBuilde 接口访问时,错误提示全部内容是: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter] with root cause。 产生的原因: 我本地的JDK.. 错误:Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter 1. 降低JDK版本到1.8 2. 手动导入以下包: 转:解决java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter 开发遇到java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter的问题,pom没有报错, 网上搜索后,见到这篇文章,顺利解决问题,留存以备后查: 链接: https://www.cnblogs.com/smfx1314/p/11071718.html. 故障原因: JAXB API是java EE 的 解决报错 Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter