当前位置:   article > 正文

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

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

解决办法

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/507646
推荐阅读
相关标签
  

闽ICP备14008679号