【已解决】Caused by: java.lang.ClassNotFoundException: com.sun.istack.Pool

最近遇到一个报错,记录一下解决的过程:

报错:

22-03-18.10:16:33.718 [JSF-FileRegistry-Back-Load-2-T-1] ERROR FileRegistry            - com/sun/istack/Pool
java.lang.NoClassDefFoundError: com/sun/istack/Pool
	at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1156) ~[jaxb-impl-2.3.1.jar:2.3.1]
	at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:165) ~[jaxb-impl-2.3.1.jar:2.3.1]
    ..
	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_65]
Caused by: java.lang.ClassNotFoundException: com.sun.istack.Pool
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) ~[catalina.jar:7.0.42]
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) ~[catalina.jar:7.0.42]
	... 20 common frames omitted

解决办法

Maven中增加 jaxb-impljaxb-core两个依赖即可,此处参考点击跳转。如果已经有这两个jar包,还是出现同样的问题,可以变更一下jaxb-impl的版本号,另外jaxb-core 依赖于 istack-commons-runtime,也可以在 jaxb-core 的 pom 中找到,此处参考 点击跳转

总的来说,java.lang.ClassNotFoundException,即java类找不到。这类典型异常通常是由于,没有在依赖管理中声明版本或者没有引入导致,由于maven仲裁机制的存在,有的时候选取了错误的版本,而这个版本恰好缺少了我们所需要的某个class,就会产生该错误。

例如httpclient-4.4.jar升级到httpclient-4.36.jar时,类org.apache.http.conn.ssl.NoopHostnameVerifier被去掉了,如果此时我们本来需要的是4.4版本,且用到了NoopHostnameVerifier这个类,而maven仲裁时选择了4.36,则会导致ClassNotFoundException异常。

参考

1、https://github.com/Enterprise-Content-Management/documentum-rest-client-java/issues/4
2、Jar包冲突问题及解决方案!
3、https://stackoverflow.com/questions/60389012/java-lang-noclassdeffounderror-com-sun-istack-pool

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值