简体   繁体   English

java.lang.NoClassDefFoundError:使用 Java 11 解码 JWT 令牌时的 javax/xml/bind/DatatypeConverter

[英]java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter while decoding JWT token with Java 11

When calling this method for decoding a JWT token javax.xml.bind.DatatypeConverter.parseBase64Binary(encoded) I get this exception:当调用此方法解码 JWT 令牌 javax.xml.bind.DatatypeConverter.parseBase64Binary(encoded) 时,出现此异常:

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1082)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)


Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at io.jsonwebtoken.impl.Base64Codec.decode(Base64Codec.java:26)
at io.jsonwebtoken.impl.Base64UrlCodec.decode(Base64UrlCodec.java:78)
at io.jsonwebtoken.impl.AbstractTextCodec.decodeToString(AbstractTextCodec.java:36)
at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:251)
at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:481)
at io.jsonwebtoken.impl.DefaultJwtParser.parseClaimsJws(DefaultJwtParser.java:541)

I have this external libraries on the project among others:我在项目中有这个外部库:

implementation "jakarta.xml.bind:jakarta.xml.bind-api:3.0.1"
  implementation "org.glassfish.jaxb:jaxb-runtime:3.0.2"
  io.jsonwebtoken:jjwt:0.9.1
javax.xml.bind:jaxb-api:2.3.1

In the external library javax.xml.bind:jaxb-api:2.3.1 I can find the javax/xml/bind/DatatypeConverter used in the code so I don't understand why I'm getting the NoClassDefFoundError.在外部库 javax.xml.bind:jaxb-api:2.3.1 中,我可以找到代码中使用的 javax/xml/bind/DatatypeConverter,所以我不明白为什么会出现 NoClassDefFoundError。

I use Java 11 on the project and spring boot.我在项目上使用 Java 11 和 spring 启动。

Thanks for the help.谢谢您的帮助。

Add this line in gradle.在 gradle 中添加这一行。

implementation 'javax.xml.bind:jaxb-api:2.4.0-b180830.0359'实现'javax.xml.bind:jaxb-api:2.4.0-b180830.0359'

Downgrade your javax.xml.bind:jaxb-api With specific version.使用特定版本降级您的javax.xml.bind:jaxb-api

Add this class to your program for now until new versions of io.jsonwebtoken that work with jakarta are ready.现在将此 class 添加到您的程序中,直到准备好与jakarta一起使用的新版本io.jsonwebtoken

The path of this class must be io.jsonwebtoken.impl这个class的路径一定是io.jsonwebtoken.impl

package io.jsonwebtoken.impl;

import jakarta.xml.bind.DatatypeConverter;

public class Base64Codec extends AbstractTextCodec {
    public Base64Codec() {
    }

    public String encode(byte[] data) {
        return DatatypeConverter.printBase64Binary(data);
    }

    public byte[] decode(String encoded) {
        return DatatypeConverter.parseBase64Binary(encoded);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 为什么我在尝试构建 JWT 令牌时遇到此异常? java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter - Why am I obtaining this exception trying to build a JWT token? java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter 如何解决 java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter Java 11 - How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter Java 11 Sbt项目加载错误-“ java.lang.NoClassDefFoundError:javax / xml / bind / DatatypeConverter” - Sbt project loading error - “java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter” 泽西Servlet-java.lang.NoClassDefFoundError:javax / xml / bind / JAXBException - Jersey Servlet - java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException java.lang.NoClassDefFoundError:的javax / XML /结合/ JAXBContext而 - java.lang.NoClassDefFoundError:javax/xml/bind/JAXBContext 如何解决 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException - How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException 错误 java.lang.NoClassDefFoundError: javax/jws/WebService in Java 11 - Error java.lang.NoClassDefFoundError: javax/jws/WebService in Java 11 如何解决错误:java:java.lang.NoClassDefFoundError:javax/xml/bind/JAXBException - How to resolve Error:java: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException 更新到 Android Studio 4.2 后 - java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException after updating to Android Studio 4.2 java.lang.NoClassDefFoundError: javax.xml.bind.DatatypeConverterImpl(初始化失败) - java.lang.NoClassDefFoundError: javax.xml.bind.DatatypeConverterImpl (initialization failure)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM