gpt4 book ai didi

spring-security - 获取异常java.lang.NoClassDefFoundError : Could not initialize class javax. xml.bind.DatatypeConverterImpl

转载 作者:行者123 更新时间:2023-12-03 13:33:14 24 4
gpt4 key购买 nike

在实现Jwt Spring Security实现时遇到以下异常:

java.lang.NoClassDefFoundError: Could not initialize classjavax.xml.bind.DatatypeConverterImpl .


在Spring Boot项目中
pom.xml中的依赖项如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- For Working with Json Web Tokens (JWT) -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- marked the embedded servlet container as provided -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.6.0</version>
</dependency>
<!-- hot swapping, disable cache for template, enable live reload -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>1.3.3.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

<!-- Optional, for bootstrap -->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.3.7</version>
</dependency>

<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<scope>compile</scope>
<version>1.0</version>
</dependency>

<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>

</dependencies>
详细的 bootstrap 如下:
Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: 
Could not initialize class javax.xml.bind.DatatypeConverterImpl
] with root cause
java.lang.NoClassDefFoundError: Could not initialize class javax.xml.bind.DatatypeConverterImpl
at javax.xml.bind.DatatypeConverter.initConverter(Unknown Source)
at javax.xml.bind.DatatypeConverter.parseBase64Binary(Unknown Source)
at io.jsonwebtoken.impl.Base64Codec.decode(Base64Codec.java:26)
at io.jsonwebtoken.impl.DefaultJwtBuilder.signWith(DefaultJwtBuilder.java:99)
at com.mpcz.services.jwt.security.JwtTokenUtil.generateToken(JwtTokenUtil.java:92)
at com.mpcz.services.jwt.security.JwtTokenUtil.generateToken(JwtTokenUtil.java:85)
at com.mpcz.services.controller.ConsumerLoginController.register(ConsumerLoginController.java:183)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
在以下代码生成JWT token 时获取上述错误:
Jwts.builder().setClaims(claims).setExpiration(generateExpirationDate()).signWith(SignatureAlgorithm.HS512, secret).compact();

最佳答案

供将来引用,该解决方案添加了以下依赖关系,以避免出现Java 11问题:
对于Maven项目:

<dependency> 
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.1</version>
</dependency>
对于gradle项目:
compile 'javax.xml.bind:jaxb-api:2.1'
归功于@Giggs

关于spring-security - 获取异常java.lang.NoClassDefFoundError : Could not initialize class javax. xml.bind.DatatypeConverterImpl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55606519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com