我正在为执行返回的DI做一本简单的例子:
Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/p]
Offending resource: class path resource [META-INF/spring/app-context.xml]
app-context.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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="provider" class="com.apress.prospring4.ch2.HelloWorldMessageProvider"/>
<bean id="renderer" class="com.apress.prospring4.ch2.StandardOutMessageRenderer" p:messageProvider-ref="provider"/>
</beans>
所有流行的行为都很好...... 没有DI的豆子的外部额外练习也很好...... 使用Spring 4.2,Maven 3,JVM 1.8。 有什么想法吗?
编辑我已将p:符号更改为
<bean id="renderer" class="com.apress.prospring4.ch2.StandardOutMessageRenderer">
<property name="messageProvider" ref="provider" />
</bean>
并删除了p命名空间引用,以便app现在可以正常工作,这很好,因为我在那里学习新手。
尽管如此,我仍然想知道如何让p命名空间工作! 作为旁注,我看不到任何“http://www.springframework.org/schema/p”,尽管我可以看到“http://www.springframework.org/schema/beans”;可能是我缺乏知识。
答案 0 :(得分:0)
将应用程序打包到单个可执行文件Jar中时遇到此错误(直接在eclipse / IntelliJ中运行时工作)。
问题是在打包过程中,spring.schemas文件被覆盖在META-INF文件夹中。
您可以使用maven shade插件解决这个问题,并使用mvn clean package构建jar
您需要使用变换器来附加弹簧文件(并将主类更改为您自己的)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>tom.lightwaverf.Main</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>