阿里Arthas排查java.lang.NoClassDefFoundError
在测试环境给下游配置测试数据时, 发现应用中提示异常信息:
2025-03-08 16:55:42.965 INFO [] [XNIO-3 task-23] [SystemAction] 添加系统配置。start...请求数据:{"unit":"字符","creator":"2","code":"CST_ALL_QICHA_FILTER","record":"企查查名称过滤器, rule:过滤方式,end过滤结尾字符, index过滤包含字符,start过滤起始字符.","value":"[{\"rule\":\"end\",\"key\":\"百货店\"}]"}
Exception in thread "XNIO-3 task-23" java.lang.NoClassDefFoundError: io/undertow/server/DefaultResponseListener
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:360)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)使用arthas查询日志
[root@localhost home]# java -jar arthas-boot.jar
[INFO] JAVA_HOME: /usr/local/jdk/jdk1.8.0_401/jre
[INFO] arthas-boot version: 3.7.2
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 23008 /home/xpos-channel-srv/xpos-channel-srv.jar
[2]: 29063 /home/xpos-api-web-srv/xpos-api-web-srv.jar
[3]: 10280 /home/pos-core/pos-core.jar
[4]: 31241 /home/pos-http/pos-http.jar
[5]: 1674 /home/eureka/eureka.jar
[6]: 12523 /home/xpos-ams-srv/xpos-ams-srv.jar
[7]: 8013 /home/xpos-batch-srv/xpos-batch-srv.jar
[8]: 10382 /home/pos-server-key/pos-server-key.jar
[9]: 2992 /home/xpos-txn-srv/xpos-txn-srv.jar
[10]: 28786 /home/xpos-cif-srv/xpos-cif-srv.jar
[11]: 21715 /home/xpos-mkt-srv/xpos-mkt-srv.jar
[12]: 19414 /home/xpos-core-srv/xpos-core-srv.jar
[13]: 3478 /home/pos-server/pos-server.jar
[14]: 13880 /home/xpos-api-customer-srv/xpos-api-customer-srv.jar
[15]: 22649 /home/xpos-abiz-srv/xpos-abiz-srv.jar
[16]: 22394 /home/xpos-oos-web-srv/xpos-oos-web-srv.jar
[17]: 989 /home/xpos-platform-srv/xpos-platform-srv.jar
16
[INFO] Start download arthas from remote server: https://arthas.aliyun.com/download/4.0.4?mirror=aliyun
[INFO] Download arthas success.
[INFO] arthas home: /root/.arthas/lib/4.0.4/arthas
[INFO] Try to attach process 22394
[INFO] Attach process 22394 success.
[INFO] arthas-client connect 127.0.0.1 3658
,---. ,------. ,--------.,--. ,--. ,---. ,---.
/ O \ | .--. ''--. .--'| '--' | / O \ ' .-'
| .-. || '--'.' | | | .--. || .-. |`. `-.
| | | || |\ \ | | | | | || | | |.-' |
`--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'
wiki https://arthas.aliyun.com/doc
tutorials https://arthas.aliyun.com/doc/arthas-tutorials.html
version 4.0.4
main_class
pid 22394
time 2025-03-08 17:01:52.970排查方法执行路径和耗时
[arthas@22394]$ trace com.posp.oos.web.srv.service.impl.ConfigServiceImpl addConfig -n 1
Press Q or Ctrl+C to abort.
Affect(class count: 2 , method count: 2) cost in 563 ms, listenerId: 1
`---ts=2025-03-08 17:03:42.076;thread_name=XNIO-3 task-26;id=148;is_daemon=false;priority=5;TCCL=org.springframework.boot.loader.LaunchedURLClassLoader@63961c42
`---[1.537211ms] com.posp.oos.web.srv.service.impl.ConfigServiceImpl$$EnhancerBySpringCGLIB$$e8b626cd:addConfig() [throws Exception]
+---[19.14% 0.29423ms ] org.springframework.cglib.proxy.MethodInterceptor:intercept() [throws Exception]
`---throw:java.lang.NoClassDefFoundError #275 [org/springframework/transaction/support/CallbackPreferringPlatformTransactionManager]
发现异常信息, 并查看到具体的位置.
查看方法的入参出参和异常
[arthas@22394]$ watch com.posp.oos.web.srv.service.impl.ConfigServiceImpl addConfig '{params,returnObj,throwExp}' -n 5 -x 3
Press Q or Ctrl+C to abort.
Affect(class count: 2 , method count: 2) cost in 182 ms, listenerId: 7
method=com.posp.oos.web.srv.service.impl.ConfigServiceImpl$$EnhancerBySpringCGLIB$$e8b626cd.addConfig location=AtExceptionExit
ts=2025-03-08 17:22:47.493; [cost=0.492887ms] result=@ArrayList[
@Object[][
@JSONObject[
@String[unit]:@String[字符],
@String[creator]:@String[2],
@String[code]:@String[CST_ALL_QICHA_FILTER],
@String[record]:@String[企查查名称过滤器, rule:过滤方式,end过滤结尾字符, index过滤包含字符,start过滤起始字符.],
@String[value]:@String[[{"rule":"end","key":"百货店"}]],
],
],
null,
java.lang.NoClassDefFoundError: org/springframework/transaction/support/CallbackPreferringPlatformTransactionManager
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:275)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
at com.posp.oos.web.srv.service.impl.ConfigServiceImpl$$EnhancerBySpringCGLIB$$e8b626cd.addConfig(<generated>)
at com.posp.oos.web.srv.controller.SystemAction.addConfig(SystemAction.java:486)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
定位到具体文件的行数

查看包中是有这个架包和具体的class文件的.
突发奇想查看具体的jar包,拉下来看看. 发现没有jar文件.
[root@localhost xpos-oos-web-srv]# ls
arthas-output backup log start.sh stop.sh xpos-oos-web-srv了解到, 有同事通过jenkins发布应用但是失败了. jar删除了. 没停服务新jar包也没传上来.
后续忙其他事情没管了
解决: 重新发布
后续正常了.
本文链接:
/archives/1753546739631
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
刘同学的小站!
喜欢就支持一下吧