【题目办理】org.springframework.web.util.NestedServletException: Handl ...

打印 上一主题 下一主题

主题 906|帖子 906|积分 2718

具体异常信息:
   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:1055)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
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.DefaultJwtBuilder.signWith(DefaultJwtBuilder.java:99)

org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88)
at com.msrl.zhibo.advice.LogAspect.runTime(LogAspect.java:38)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)

org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
… 39 more
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:92)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
… 75 more
  阐明:

这个题目通常是由于在项目打包后,某些依赖项未正确包含在打包的结果中导致的,特别是缺少了 javax.xml.bind.DatatypeConverter 类。这个类在 Java 8 中是由 JAXB (Java Architecture for XML Binding) 提供的,但从 Java 9 开始,JAXB 已不再默认包含在 JDK 中。
本人的思路:

因为我的电脑上不仅装了Java 8 ,还装了 Java 17 而且 Java 17 还是默认的 Java 环境,但是项目是 Java 8 的项目,打包后在电脑运行就默认运行在了 Java 17 环境下,从而出现了此类异常。所以把默认的环境改回 Java 8 即可办理此题目。
留意:若直接修改 JAVA_HOME 无效的话,就直接去path变量里添加即可,不要忘记把此条变量移动到顶部,因为哪个靠前就生效哪个。

以下是ChatGPT提供的办理方案:

1、添加 JAXB 依赖

假如你的项目使用 Java 9 或更高版本,你须要手动添加 JAXB 相干的依赖。可以在 pom.xml 中添加以下依赖来办理这个题目:
  1. <dependency>
  2.     <groupId>javax.xml.bind</groupId>
  3.     <artifactId>jaxb-api</artifactId>
  4.     <version>2.3.1</version>
  5. </dependency>
  6. <dependency>
  7.     <groupId>org.glassfish.jaxb</groupId>
  8.     <artifactId>jaxb-runtime</artifactId>
  9.     <version>2.3.1</version>
  10. </dependency>
复制代码
2、查抄打包方式

确保你在打包过程中使用的是 spring-boot-maven-plugin 或者类似的打包插件,并且相干依赖已经正确包含在最终生成的 .jar 文件中。
假如你使用 spring-boot-maven-plugin,确保你的 pom.xml 有如下设置:
  1. <build>
  2.     <plugins>
  3.         <plugin>
  4.             <groupId>org.springframework.boot</groupId>
  5.             <artifactId>spring-boot-maven-plugin</artifactId>
  6.             <version>2.3.1</version> <!-- 确保版本和 Spring Boot 的版本一致 -->
  7.             <executions>
  8.                 <execution>
  9.                     <goals>
  10.                         <goal>repackage</goal>
  11.                     </goals>
  12.                 </execution>
  13.             </executions>
  14.         </plugin>
  15.     </plugins>
  16. </build>
复制代码
3、确保正确的 JDK

确认你在打包和运行项目时使用类似的 JDK 版本。尤其是当项目在 Java 8 上开发并打包,却使用 Java 9 或更高版本运行时,缺少的类可能导致这个题目。
4、模块化项目(Java 9+)

假如你在使用 Java 9 及以上版本,并且项目是模块化的,你可以考虑将 JAXB 模块手动包含在运行时,使用以下 JVM 参数:
  1. --add-modules java.xml.bind
复制代码
在 pom.xml 中设置:
  1. <configuration>    <jvmArguments>--add-modules java.xml.bind
  2. </jvmArguments></configuration>
复制代码
5、总结

这个错误的根本原因是从 Java 9 开始,javax.xml.bind.DatatypeConverter 不再默认提供。通过手动添加 JAXB 依赖或确保正确的打包设置,应该可以办理这个题目。假如你使用的是 Java 8,那么这可能是依赖未被正确打包的题目。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表