Java 为什么';Spring项目的导出可运行JAR不能在另一个系统中工作吗?

Java 为什么';Spring项目的导出可运行JAR不能在另一个系统中工作吗?,java,spring,executable-jar,Java,Spring,Executable Jar,我通过Eclipse为Spring项目创建了一个可执行JAR 它在我的系统上的工作与我预期的一样,但是当我试图在另一个系统上执行相同的JAR时,它就不工作了。它抛出一个异常,如: Exception--> org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from relativ

我通过Eclipse为Spring项目创建了一个可执行JAR

它在我的系统上的工作与我预期的一样,但是当我试图在另一个系统上执行相同的JAR时,它就不工作了。它抛出一个异常,如:

Exception-->
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from
 relative location [applicationContext-DAO.xml]
Offending resource: class path resource [resources/applicationContext.xml]; nested exception is org.springframework.beans.factory.xml.X
mlBeanDefinitionStoreException: Line 6 in XML document from class path resource [resources/applicationContext-DAO.xml] is invalid; nest
ed exception is org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 336; cvc-elt.1: Cannot find the declaration of element 'bea
ns'.
        at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
        at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
        at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinition
DocumentReader.java:271)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentR
eader.java:196)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocument
Reader.java:181)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDoc
umentReader.java:140)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocum
entReader.java:111)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
        at com.nextenders.server.ApplicationContext.initContextFile(ApplicationContext.java:88)
        at com.nextenders.server.ApplicationContext.<init>(ApplicationContext.java:60)
        at com.nextenders.server.ApplicationContext.getInstance(ApplicationContext.java:45)
        at com.nextenders.common.DaoReceiver.processRequest(DaoReceiver.java:49)
        at com.nextenders.common.DaoHandler.handleRequest(DaoHandler.java:12)
        at com.nextenders.facadeimplementation.facade.UtilityFacade.main(UtilityFacade.java:625)
Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 6 in XML document from class path resource [reso
urces/applicationContext-DAO.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 336; cvc-
elt.1: Cannot find the declaration of element 'beans'.
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinition
DocumentReader.java:255)
        ... 14 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 336; cvc-elt.1: Cannot find the declaration of element 'beans'.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
        at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)
        ... 17 more

C:\programforforkdocument>
我使用的是spring--3.2.0.RC2.jar,我的模式条目如下

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">


在我看来,您可能缺少一个库。我猜是其中包含spring-beans.dtd文件的那一个。

在我看来,您可能缺少一个库。我猜是有spring-beans.dtd文件的那一个。

将jar添加到类路径

将jar添加到类路径

参考您的更新:查看此解决方案:


问题似乎是内部spring文件在组装阶段被覆盖。您使用哪个maven插件进行组装?在使用spring框架构建JAR时,似乎必须使用maven shade插件,该框架将spring处理程序和spring模式合并在一起。请参阅问题的解决方案。

参考您的更新:请参阅此解决方案:


问题似乎是内部spring文件在组装阶段被覆盖。您使用哪个maven插件进行组装?在使用spring框架构建JAR时,似乎必须使用maven shade插件,该框架将spring处理程序和spring模式合并在一起。请参阅问题的解决方案。

applicationContext.xml是一个xml文件。SAXParserException表示XML验证失败,因此文本“找不到元素“beans”的声明”,这表示SAX解析器无法将名为“beans”的元素的定义归档。这些Spring-XML元素在Spring-beans-3.0.dtd中定义,这是一个文档类型定义,定义了解析器用来解释XML文件的XML契约。该文件通常位于spring.jar中,这似乎表明它不在您的类路径中。这也可能有帮助(在谷歌搜索30秒后发现):我已经根据它进行了更改,但它显示了新的错误。我更新了我的问题。知道吗?上下文XML的指定DTD与正在查找(或完全未找到)的DTD之间存在断开连接。applicationContext.XML是一个XML文件。SAXParserException表示XML验证失败,因此文本“找不到元素“beans”的声明”,这表示SAX解析器无法将名为“beans”的元素的定义归档。这些Spring-XML元素在Spring-beans-3.0.dtd中定义,这是一个文档类型定义,定义了解析器用来解释XML文件的XML契约。该文件通常位于spring.jar中,这似乎表明它不在您的类路径中。这也可能有帮助(在谷歌搜索30秒后发现):我已经根据它进行了更改,但它显示了新的错误。我更新了我的问题。你知道吗?上下文XML指定的DTD和正在查找(或完全未找到)的DTD之间存在断开连接。它已经存在。正如我在这里提到的。它正在一个创建它的系统上工作!!。但不是另一个。你们知道吗?你们可能在xml文件中有一些垃圾字符,把它复制到记事本上,看看它是否显示了一些奇怪的字符,它已经在那个里了。正如我在这里提到的。它正在一个创建它的系统上工作!!。但不是另一个。你们知道吗?你们可能在xml文件中有一些垃圾字符,把它复制到记事本上,看看它是否显示了一些奇怪的字符
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">