Struts2 jQuery struts-plugin.xml 无效 [英] Struts2 jQuery struts-plugin.xml invalid
问题描述
我已经建立了一个项目,它是 Struts2 + Springs + JPA 的组合.
我最近遇到了 Struts2-Jquery 插件
在我的项目中使用这个插件 (struts2-jquery-plugin-3.5.1.jar) 出现错误
无法加载 jar:file:/H:/My%20Project/phase1/build/web/WEB-INF/lib/struts2-jquery-plugin-3.5.1.jar!/struts-plugin.xml - 类:java.net.PlainSocketImpl文件:PlainSocketImpl.java方法:连接第 195 行 - java/net/PlainSocketImpl.java:195:-1在 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:909)在 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:154)在 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:121)在 com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:179)在 com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)... 48 更多引起:java.net.UnknownHostException:struts.apache.org在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195)在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)在 java.net.Socket.connect(Socket.java:529)在 java.net.Socket.connect(Socket.java:478)在 sun.net.NetworkClient.doConnect(NetworkClient.java:163)在 sun.net.www.http.HttpClient.openServer(HttpClient.java:394)在 sun.net.www.http.HttpClient.openServer(HttpClient.java:529)在 sun.net.www.http.HttpClient.(HttpClient.java:233)在 sun.net.www.http.HttpClient.New(HttpClient.java:306)在 sun.net.www.http.HttpClient.New(HttpClient.java:323)在 sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)在 sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)在 sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)在 sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)在 com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)在 com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315)在 com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282)在 com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283)在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1194)在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090)在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003)在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)在 com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)在 com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)在 javax.xml.parsers.SAXParser.parse(SAXParser.java:395)在 com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:113)... 53 更多
在此处提供了此特定错误的解决方案 作为 Struts2 DTD 问题.
执行上述链接中给出的解决方案.. 更新了我的 webapp lib 文件夹中的三个库:
- Struts2-core-2.3.4.1
- struts2-spring-plugin-2.3.4.1
- xwork-core-2.3.4.1
在此更新后尝试部署时,我得到了此堆栈跟踪
SEVERE:异常启动过滤器 struts2java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils在 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:209)在 org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:102)在 com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:210)在 com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)在 org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:390)在 org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:437)在 org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)在 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)在 org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)在 org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)在 org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)在 org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:103)在 org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4649)在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5305)在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)在 org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:650)在 org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:531)在 org.apache.catalina.startup.HostConfig.check(HostConfig.java:1468)在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)在 java.lang.reflect.Method.invoke(Method.java:597)在 org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)在 com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)在 org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1436)在 org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:856)在 org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:353)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:621)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:722)在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)在 org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)在 org.apache.tomcat.util.net.JioEndpoint$SocketProcessor.run(JioEndpoint.java:312)在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)在 java.lang.Thread.run(Thread.java:662)引起:java.lang.ClassNotFoundException:org.apache.commons.lang3.StringUtils在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)... 52 更多
谁能告诉我哪里出错了?
您需要将 commons-lang3-3.x.jar
添加到您的类路径中,以便过滤器运行.
你必须确保你没有多个版本的 commons-lang3-x.x.jar
.
commons-lang3-xxjar
和 commons-lang-xxjar
可以共存于同一个 classpath 中,因为 package
是不同的(他们是故意这样做的;)
这是可以知道的,因为NoClassDefFoundError:
<块引用>java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils.
主要发生在两种情况:
- 在运行时,您没有库,
- 或者您有两个版本的库,因此类加载器不知道选择哪个,并引发异常.
包中的lang3意味着缺少的StringUtils类来自common-lang3-*.jar
,而不是common-lang-*.jar
.>
I have setup a project which is a combo of Struts2 + Springs + JPA.
I recently came across the Struts2-Jquery Plugin
Using this plugin (struts2-jquery-plugin-3.5.1.jar) in my project I got an error
Unable to load jar:file:/H:/My%20Project/phase1/build/web/WEB-INF/lib/struts2-jquery-plugin-3.5.1.jar!/struts-plugin.xml - Class: java.net.PlainSocketImpl
File: PlainSocketImpl.java
Method: connect
Line: 195 - java/net/PlainSocketImpl.java:195:-1
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:909)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:154)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:121)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:179)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
... 48 more
Caused by: java.net.UnknownHostException: struts.apache.org
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1194)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:113)
... 53 more
The solution to this particular error was given here as Struts2 DTD problem.
Acting in the solution given in the above link.. updated three libraries in my webapp lib folder:
- Struts2-core-2.3.4.1
- struts2-spring-plugin-2.3.4.1
- xwork-core-2.3.4.1
When trying to deploy after this update I got this stacktrace
SEVERE: Exception starting filter struts2
java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:209)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:102)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:210)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:390)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:437)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4649)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5305)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:650)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:531)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1468)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1436)
at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:856)
at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:353)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
... 52 more
Can anyone give me a pointer where I am going wrong ?
You need to add the commons-lang3-3.x.jar
to your classpath for the filter to run.
You must ensure you don't have multiple versions of commons-lang3-x.x.jar
too.
commons-lang3-x.x.jar
and commons-lang-x.x.jar
instead can coexist in the same classpath, because the package
is different (they did it on purpose ;)
This can be known, because of NoClassDefFoundError:
java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils.
which occurs mostly in two cases:
- at runtime, you doesn't have the library,
- or you have two versions of the library, hence the classloader doesn't know which to pick, and raises the exception.
The lang3 in the package means that the StringUtils class missing is from common-lang3-*.jar
, not from common-lang-*.jar
.
这篇关于Struts2 jQuery struts-plugin.xml 无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!