在本地可以运行,但测试环境上报错:
0000001c EndpointMetho E com.newchinalife.HesitPeriodCTSrvPortTypeImplBL (initialization failure)
java.lang.NoClassDefFoundError: com.newchinalife.HesitPeriodCTSrvPortTypeImplBL (initialization failure)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:140)
at com.newchinalife.HesitPeriodCTSrvPortTypeImpl.hesitPeriodCT(HesitPeriodCTSrvPortTypeImpl.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:45)
最后从测试环境取.class文件反编译,发现HesitPeriodCTSrvPortTypeImplBL.java中写的一个内部类没有反编译出来。
因为在我们的工作流程中,发布测试环境时只会发布.java的同名.class文件(除非特别告知),而内部类本身有自己的.class文件,需要一同发布。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
网上分析的情况很多,比较详细的有:
https://blog.youkuaiyun.com/jamesjxin/article/details/46606307
https://blog.youkuaiyun.com/u013063153/article/details/72864265
测试环境Class文件缺失错误
本文探讨了在本地运行正常的应用,在测试环境遭遇NoClassDefFoundError异常的问题。通过反编译测试环境的.class文件,发现内部类未被正确发布,揭示了发布流程中仅发布同名.class文件可能导致的错误。文章提供了详细的错误信息及分析链接。

被折叠的 条评论
为什么被折叠?



