我目前正在尝试使用 Struts2 框架创建一个小型 Web 应用程序。(在日食中)
我目前正在尝试在 web.xml(在 WEB-INF 文件夹中)文件中使用过滤器来将控制权转移到 struts.xml 文件(在 src 文件夹中)。(这是我在教程中看到的)。
我用于过滤器的代码如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我不认为 Tomcat 在过滤器的 JAR 文件中找到该类,因为我不断收到以下错误:
java.lang.NoClassDefFoundError: com/opensymphony/xwork2/ActionContext at org.apache.struts2.dispatcher.ng.InitOperations.cleanup(InitOperations.java:114) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init (StrutsPrepareAndExecuteFilter.java:60)
...持续了很长一段时间。
我从 Struts 网页下载了 Jar 文件,我设置构建路径的方式如下:
我右键单击该项目并转到属性
转到 Java Build Path 部分并创建了一个新库
将所有 Jar 文件添加到该库并将其分配给此 Web 应用程序的构建路径
然后我将此 Jar 库添加到部署程序集,以便在它运行时将其部署到 WEB-INF/lib 文件夹。
据我所知,这应该有效,因为它在我遵循的教程中有效!但是,它对我不起作用。
当我运行我的项目并通过我的 PC 导航到保存项目的位置时,如果我查看 WEB-INF/lib 文件夹,那里没有任何 Jar 文件,这可能是问题所在吗?或者这是正常的吗?
感谢您的帮助,非常感谢!
编辑
这是我正在使用的 jar 文件:
commons-fileupload-1.2.2
commons-io-2.0.1
commons-logging-1.1.1
commons-logging-api-1.1
freemarker-2.3.19
javaassist-3.11.0.GA
ognl-3.0.6
struts2-core-2.3.8
xwork-core-2.3.8
commons-lang-2.4
已解决 - 通过在新版本上完全重新启动项目来解决!更新 - 还通过删除所有 jar 并重新创建 jar 库并将其重新分配给构建路径/部署程序集来修复旧构建(尽管在尝试调试时这样做了数百次)
然后移除旧的 Tomcat 服务器并分配一个新的。
不完全确定是什么修复了它,但现在一切正常