gpt4 book ai didi

tomcat - 从 Cygwin 使用 Tomcat,接收 ClassNotFoundException,

转载 作者:行者123 更新时间:2023-11-28 22:42:37 24 4
gpt4 key购买 nike

我一直在四处寻找这个问题的潜在解决方案。我知道在启动 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)

最佳答案

我认为我无法为您的问题提供具体的解决方案,因为我需要有关您的应用程序的更多详细信息(它实现了哪些类等),但是我可以提供一些提示可能会帮助您调查自己。

首先了解标准的 Java 类加载过程很重要:

enter image description here

Tomcat 扩展了这个模型,默认情况下让类加载器首先查看 Web 应用程序内部,然后再要求父类加载器查找请求的类 (delegate: false)。这是为了增加类加载的安全性和灵 active ,例如

  • 缓存类
  • 限制代码只能从 WEB-INF/libWEB-INF/classes 中加载
  • 类的动态加载(在运行时等)

因此,如果您以任何方式篡改此过程/安全限制或实现 java.class.ClassLoader,那么这是开始调查的好地方。

虽然我建议您简单地从一个独立的干净 tomcat 安装开始,检查它是否正常工作,然后再次部署您的应用程序,如果它持续中断,那么您就知道它确实是您的应用程序中断了它。

接下来就可以根据上述原则开始有趣的调查了。

Further reading

希望这对您有所帮助。

关于tomcat - 从 Cygwin 使用 Tomcat,接收 ClassNotFoundException,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24045565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com