我有一个使用 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 -
我知道这不是完整的文本转储,但我不知道其余部分有多大用处。我需要理解它为什么这样做,这样我才能让它工作。
您不应将应用程序特定的 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。
没关系。事实证明,我所需要做的就是忘记构建路径,只将 jar 放入
WEB-INF/lib
文件夹中。效果就像一个魅力:D