1

我設置了一個項目,它是Struts2 + Springs + JPA的組合。Struts2 jQuery struts-plugin.xml無效

我最近遇到了Struts2-Jquery Plugin

排在我的項目中使用這個插件(Struts2的,jQuery的插件-3.5.1.jar)我得到一個錯誤

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 

解決此特定錯誤被授予here作爲Struts2的DTD問題。

代理在上面的鏈接中給出的解決方案。在我的webapp的lib文件夾更新三個庫:

  • Struts2的核心-2.3.4.1
  • Struts2的彈簧,插件-2.3.4.1
  • XWork的核心-2.3.4.1

在嘗試此更新我得到這個堆棧跟蹤後部署

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 

任何人都可以給我一個指針,我哪裏出錯了?

+1

您可能有多個版本的'commons-lang3-xxxx.jar'。注意'3'。 – 2013-03-22 08:22:13

+0

@AndreaLigios :)我沒有任何公地lang3-xxx.jar在我的應用程序 我列入只是 公共資源的集合-3.1.jar, 公地文件上傳-1.2.1.jar, commons-的公地io-1.3.2.jar, commons-logging-1.1.1.jar – shridatt 2013-03-22 08:35:17

+1

然後添加它:) 'org/apache/commons/** lang3 **/StringUtils' – 2013-03-22 09:02:58

回答

3

您需要將commons-lang3-3.x.jar添加到您的類路徑以使過濾器運行。

您必須確保您沒有commons-lang3-x.x.jar的多個版本。

commons-lang3-x.x.jarcommons-lang-x.x.jar代替可以在相同的類路徑共存,因爲package是不同的(它們是故意的)


這可以是已知的,因爲NoClassDefFoundError的

java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils.

這主要發生在兩種情況下:

  • 在運行時,您沒有庫,或者您有兩個版本的庫,因此類加載器不知道要選擇哪個並引發異常。

包中的lang3指StringUtils類缺失是從common-lang3-*.jar,而不是從common-lang-*.jar

+1

你是怎麼發現他缺少commons-lang3-xxjar – 2013-05-31 05:07:08

+1

是因爲'java.lang.NoClassDefFoundError:org/apache/commons/lang3/StringUtils'。 NoClassDefFoundError主要發生在兩種情況下:在運行時,您沒有該庫,或者您有兩個版本的庫,因此類加載器不知道選擇哪個並引發異常。包中的lang3表示缺少的StringUtils類來自'common-lang3 - *。jar',而不是'common-lang - *。jar';) – 2013-05-31 08:17:31