Struts2 <filter> 和 <filter-mapping> 导致错误

问题描述 投票:0回答:2

我有一个使用 Eclipse、Struts2 的 Web 应用程序,并在 Tomcat 7 服务器上运行。

我已经不再使用 http://javabrains.koushik.org 教程了。

我已经准备好了所有基本的 Struts 组件,但是由于某种原因,当我将这段代码引入到

web.xml
中时。

<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>

它把书扔向我。

SEVERE: Dispatcher initialization failed
Unable to load configuration. - bean -
Caused by: Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean -     
Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the name struts has already  been loaded by bean - 
SEVERE: Exception starting filter struts2    
Unable to load configuration. - bean -     
Caused by: Unable to load configuration. - bean -     
Caused by: Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean -    
Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the name struts has already been loaded by bean - jar:file:/C:/Program%20Files%20(x86)/Apache%20Software%20Foundation/Tomcat%207.0/lib/struts2-core-2.3.16.jar!/struts-default.xml:40:72
- bean -

我知道这不是完整的文本转储,但我不知道其余部分有多大用处。我需要理解它为什么这样做,这样我才能让它工作。

java eclipse tomcat configuration struts2
2个回答
3
投票

您不应将应用程序特定的 jar 复制到服务器

lib
文件夹。而是使用
WEB-INF/lib
。从服务器
struts2-core-2.3.16.jar
删除
lib
。如果
struts2-core-x.x.x.jar
中有另一个
WEB-INF/lib
,它会阻止 Tomcat 部署您的应用程序,因为在部署任何应用程序之前会加载 Tomcat
lib
文件夹中的库。它会停止部署。 Tomcat
lib
文件夹应仅包含运行 Web 容器所需的 Tomcat 安装的 jar,除非您知道自己在做什么,否则无需复制其他 jar。


2
投票

没关系。事实证明,我所需要做的就是忘记构建路径,只将 jar 放入

WEB-INF/lib
文件夹中。效果就像一个魅力:D

© www.soinside.com 2019 - 2024. All rights reserved.