classnotfoundexception:eclipse中带struts2的httpservletrequest

cwtwac6a  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(411)

我有两个版本的项目(git),最旧的(工作完美)和新的承诺(不工作-问题如下)。
下面是我在eclipse中遇到的错误:

août 18, 2020 4:22:24 PM org.apache.catalina.core.StandardContext filterStart
GRAVE: Exception au démarrage du filtre struts2
java.lang.NoClassDefFoundError: HttpServletRequest
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.privateGetPublicMethods(Unknown Source)
    at java.lang.Class.getMethods(Unknown Source)
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.getActionAnnotations(PackageBasedActionConfigBuilder.java:877)
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildConfiguration(PackageBasedActionConfigBuilder.java:689)
    at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:355)
    at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:274)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
    at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:967)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:435)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:479)
    at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4583)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: HttpServletRequest
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
    ... 27 more

这个 GRAVE: Exception au démarrage du filtre struts2 可以翻译成 SEVERE: Exception in start of struts2 filter 我在java.lang.classnotfoundexception中看到了这个答案:httpservletrequest,但我已经没有在web inf/lib文件夹中看到ServletAPI,而是在tomcat/lib中看到了。我有完全一样的 .jar 在当前修改的项目和旧项目之间。
我能怎么办?

wooyq4lh

wooyq4lh1#

错误来自约定插件。此插件用于按约定创建其他配置对象。如果您大量使用注解为struts操作定义基于java的配置,那么它将调用反射机制来处理创建运行时配置元素的过程。
这个 NoClassDefFoundError 表示当前类加载器的类路径上缺少一些类。通常通过向类路径添加缺少的jar来修复它。
如果应用程序使用的类加载器与使用的servlet容器不同,则可以忽略它。tomcat是一个servlet容器,它在多线程池中使用多个类加载器。它也可能有在8.x版本中发现的bug。
在许多方面,在损坏的servlet环境中丢失类会导致更改/更新servlet容器本身,并从maven中央存储库下载正确的依赖项。

lqfhib0f

lqfhib0f2#

我终于找到了解决办法,但我犹豫了,因为我不知道我是怎么做到的。
我试着这样:
将现有的eclipse服务器复制到另一个文件夹中。在eclipse的servers视图中使用新文件夹创建一个新服务器。右击新服务器->清理和清理tomcat工作目录。。。转到运行->运行配置
完全随机操作:双击其中一个服务器
服务器示例将启动。住手。重新启动项目。问题消失了。
我想我需要的是一个干净的出版物,但我们永远不会知道。。

相关问题