应用程序在本地计算机上运行正常。在服务器上我有jdk-1.7和Tomcat8。它在localhost日志中给出了以下错误。 jar存在于应用程序的lib目录中。
SEVERE [http-nio-8080-exec-5] org.apache.catalina.core.StandardContext.filterStart Exception starting filter struts2
java.lang.NoSuchMethodError: com.opensymphony.xwork2.config.ConfigurationManager.addConfigurationProvider(Lcom/opensymphony/xwork2/config/ConfigurationProvider;)V
at org.apache.struts2.dispatcher.Dispatcher.init_DefaultProperties(Dispatcher.java:296)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:396)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:48)
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:4659)
at org.apache.catalina.core.StandardContext.startInternal(StandardContex:
答案 0 :(得分:0)
jar存在于应用程序的lib目录中
哪个罐子?因为我猜您指的是struts2-core-2.3.24.1.jar
,其中包含您正在使用的StrutsPrepareAndExecuteFilter,但您还需要xwork-core-2.3.24.1.jar
(或您的任何版本),其中包含另一个过滤器引用的方法
答案 1 :(得分:0)
似乎jar版本中存在不匹配,因为它能够在该jar中找到类文件,但不能在类ConfigurationManager中找到具有以下签名的方法
com.opensymphony.xwork2.config.ConfigurationManager.addConfigurationProvider (Lcom/opensymphony/xwork2/config/ConfigurationProvider;)
答案 2 :(得分:0)
com.opensymphony.xwork2.config.ConfigurationManager
位于xwork*.jar
,并且没有方法addConfigurationProvider()
。如果您的应用
在本地计算机上运行正常
然后你在服务器lib的某个地方有另一个带有相同名称文件的jar。但是这个文件有不同的版本。确保您拥有struts2-core*.jar
和xwork-core*.jar
的相同版本。
这是您可以download所有必需库的链接。
将必要的库放到WEB-INF/lib
并清理服务器类路径。
答案 3 :(得分:0)
所以当我切换到tomcat7而不是tomcat8时,应用程序运行正常。