记一次Maximo移动端app报错的原因

【吉林-app】进入作业票下载页面:系统崩溃
018-11-06 10:39:32,774 - [ERROR::com.hd.hse.common.module.phone.camera.MainApplication::com.hd.hse.common.module.phone.camera.MainApplication$2] - 错误类型:java.lang.ClassNotFoundException
错误路径:java.lang.NoClassDefFoundError:hd/webclient/servlet/pad/BussinessAction
java.lang.ClassLoader.defineClass1(Native Method)
......
Caused by:
java.lang.ClassNotFoundException:hd.webclient.servlet.pad.BussinessAction
weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
java.lang.ClassLoader.loadClass(ClassLoader.java:305)
java.lang.ClassLoader.loadClass(ClassLoader.java:246)
weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(ClassLoader.java:630)
java.lang.ClassLoader.defineClass(ClassLoader.java:614)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:343)
weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:302)
weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
java.lang.ClassLoader.loadClass(ClassLoader.java:305)
java.lang.ClassLoader.loadClass(ClassLoader.java:294)
java.lang.ClassLoader.loadClass(ClassLoader.java:246)
weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:43)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:169)
hd.webclient.servlet.pad.hessian.PadServlet.exchange(PadServlet.java:99)
sun.reflect.GeneratedMethodAccessor159.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:306)
com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:202)
com.caucho.hessian.server.HessianServlet.invoke(HessianServlet.java:389)
com.caucho.hessian.server.HessianServlet.service(HessianServlet.java:369)
hd.webclient.servlet.pad.hessian.PadServlet.service(PadServlet.java:74)
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3714)
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
错误信息:hd.webclient.servlet.pad.BussinessAction

后来通过debug,发现是在Class.forname()方法中报错的,于是就去测试服务器上搜索该类,发现出现了两个同名的class文件,但是文件路径不同。一个在maximo的objectbusiness文件夹下,还有一个在webmodule的文件夹。在maximo中业务处理的类一般是在objectbusiness下的,而和显示相关比如AppDataBean,或者DateBean在webmodule下,找不到的那个类,应该是在webmodule包下。
这个时候就基本明白了原因,有人出升级包出错了文件夹,导致测试人员升级后,在PC端正常,而在移动端报错。
解决方式:把多余的class文件删除。

猜你喜欢

转载自blog.csdn.net/q634047223/article/details/83817370