我一直在寻找这个问题的潜在解决方案。我知道在启动Tomcat时有一些问题和答案可以解决这个异常,但所有这些都是基于Eclipse正在使用的假设。
我已经通过Cygwin CLI构建并安装了我的项目,并从那里启动了我的服务器,并且没有涉及任何IDE - 因此,解决涉及Eclipse的问题的许多过程和方法都不是对我来说很清楚以下是我的错误的堆栈跟踪,可在我的tomcat/logs/localhost.log
:
SEVERE: Error loading WebappClassLoader
context: /ole
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@1ac631b
org.apache.axis2.transport.http.AxisAdminServlet
java.lang.ClassNotFoundException: org.apache.axis2.transport.http.AxisAdminServlet
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1128)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
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:483)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
答案 0 :(得分:2)
我认为我不能对你的问题给出具体的解决方案,因为我需要更多关于你的应用程序的详细信息(它实现了哪些类等),但是我可以提供一些提示可能会帮助你调查自己。
首先了解标准Java类加载过程非常重要:
Tomcat扩展了这个模型,默认情况下让类加载器首先查看Web应用程序,然后让父类加载器查找请求的类(delegate: false
)。这是为了增加类加载的安全性和灵活性,例如
WEB-INF/lib
和WEB-INF/classes
因此,如果您以任何方式篡改此流程/安全限制或实施java.class.ClassLoader
这是开始调查的好地方。
虽然我建议您只是从一个独立的干净tomcat安装开始,检查它是否有效,然后再次部署您的应用程序,如果它一直中断,那么您知道它确实是您的应用程序破坏它。
然后根据上述原则开始有趣的调查。
希望这会有所帮助。