簡體   English   中英

ClassNotFoundException:Eclipse 中的 Struts2 的 HttpServletRequest

[英]ClassNotFoundException: HttpServletRequest with Struts2 in Eclipse

我有一個項目 (GIT) 的 2 個版本,最舊的(工作完美)和新的提交(不工作 - 下面的問題)。

這是我在 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但我已經沒有 servlet-api 在WEB-INF/lib文件夾中但在Tomcat/lib中。 我在當前修改的項目和舊項目之間有完全相同的.jar

我該怎么辦?

錯誤來自約定插件。 按照慣例,此插件用於創建其他配置對象。 如果您使用注釋為 Java 定義基於 struts 操作的配置,那么它會調用反射機制來處理創建運行時配置元素。

NoClassDefFoundError表示您在當前類加載器的類路徑中缺少一些類。 通常它通過將缺少的 jar 添加到類路徑來修復。

如果您的應用程序使用的類加載器與使用的 servlet 容器不同,則可以忽略它。 Tomcat 是一個 servlet 容器,它在多線程池中使用多個類加載器。 它也可能有在 8.x 版本中發現的錯誤。

在許多方面,在損壞的 servlet 環境中丟失類會導致更改/更新 servlet 容器本身並從 Maven 中央存儲庫下載正確的依賴項。

我終於找到了解決方案,但我猶豫要不要發布,因為我不知道我是怎么做到的。

我正在嘗試這個:

將現有的 Eclipse 服務器復制到另一個文件夾中。 使用新文件夾在 Eclipse 的服務器視圖中創建一個新服務器。 在新服務器上右擊->Clean and Clean Tomcat Work Directory... Go to Run -> Run configurations

完全隨機的動作:雙擊其中一個服務器

服務器實例啟動。 停下來。 重新啟動您的項目。 問題消失了。

我認為干凈的發布是我需要的,但我們永遠不會知道..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM