从Java启动Spring应用程序的异常

我能够使用Maven编译并启动Spring项目:

mvn -e clean compile exec:java -Dexec.mainClass=de.fraunhofer.fkie.tet.vmware.manager.Test

但是,当我使用maven-assembly-plugin(包括applicationContext.xml)将所有jar组装到一个文件中时,Exception在java执行过程中总是会得到一个:

java -cp target/test-jar-with-dependencies.jar:. de.fraunhofer.fkie.tet.vmware.manager.Test

INFO: Loading XML bean definitions from class path resource [applicationContext.xml]

Sep 6, 2010 10:37:21 AM org.springframework.util.xml.SimpleSaxErrorHandler warning

WARNING: Ignored XML validation warning

org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/context/spring-context.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.

...

Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:

Line 10 in XML document from class path resource [applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c:

The matching wildcard is strict, but no declaration can be found for element 'context:annotation-config'.

...

Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c:

The matching wildcard is strict, but no declaration can be found for element 'context:annotation-config'.

我还尝试将架构定义(即spring-context.xsd等)直接附加到类路径,但是没有成功。

less src/main/resources/applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

<context:annotation-config /> <!-- wegen '@PostConstruct' -->

<!--<context:component-scan base-package="de.fraunhofer" /> -->

...

</beans>

回答:

Spring命名空间处理程序使用文件/META-INF/spring.schemas和解析/META-INF/spring.handlers。由于具有这些名称的文件存在于不同的Spring jar中,因此之后可能仅其中一个保留在目标jar中maven-assembly-plugin

也许你可以手动合并这些文件,然后以某种方式配置maven-assembly-plugin为使用此合并文件覆盖目标jar中的文件。

以上是 从Java启动Spring应用程序的异常 的全部内容, 来源链接: utcz.com/qa/417213.html

回到顶部