我一个接一个地面临很多问题。让我正确记录下来-
我正在实现Springframework缓存,这是我最初的SpringCacheConfig.xml-
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:hz="http://www.hazelcast.com/schema/spring"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.hazelcast.com/schema/spring http://www.hazelcast.com/schema/spring/hazelcast-spring.xsd">
这在我的笔记本电脑上运行正常,但是在测试VM中,我们无法从Internet下载XSD架构文件。
所以我将架构位置更改为类路径-
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:hz="http://www.hazelcast.com/schema/spring"
xsi:schemaLocation="http://www.springframework.org/schema/beans classpath:spring-beans.xsd
http://www.springframework.org/schema/cache classpath:spring-cache.xsd
http://www.springframework.org/schema/context classpath:spring-context.xsd
http://www.hazelcast.com/schema/spring classpath:hazelcast-spring.xsd">
因此,现在拾取了XSD文件。但是下载的spring-context.xsd文件具有以下内容-
<xsd:import namespace="http://www.springframework.org/schema/beans" schemaLocation="https://www.springframework.org/schema/beans/spring-beans-4.3.xsd"/>
<xsd:import namespace="http://www.springframework.org/schema/tool" schemaLocation="https://www.springframework.org/schema/tool/spring-tool-4.3.xsd"/>
所以我再次将它们移至类路径。
完成这些更改后,如果现在执行我们的代码,则会收到以下错误-
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]
Offending resource: class path resource [SpringCacheConfig.xml]
我曾尝试通过许多以前的文章解决此问题,但未能解决。
pom已经包含与春季相关的jar-
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${springframework.version}</version>
</dependency>
这些罐子没有包装在主罐子中,但可以通过
获得。modules / system / layers / thirdparty / org / springframework / main / spring-context-4.3.1.RELEASE.jar。
但是为什么找不到该罐子?
我也尝试了阴影插件,但是仍然不包括依赖罐- How to create spring-based executable jar with maven?
我还要考虑什么?
我在jar中没有META-INF / spring.handlers等与Spring相关的文件。可能是问题吗?
答案 0 :(得分:0)
我通过创建一个META-INF目录并将spring.handlers和spring.schemas文件放入其中来解决了这个问题。我提取了所有的弹簧罐,其中一些具有这些spring.handlers和spring.schemas文件。我将这些文件的内容串联起来,并将它们放在META-INF中。
但是令人惊讶的是,该项目在Eclipse中工作,但在VM中工作。在eclipse项目中,我不需要复制jar的META-INF目录中的spring.handlers和spring.schemas文件-它可以在没有它们的情况下工作。但是在VM中,我需要复制文件!这些文件可能是在Eclipse中从.m2引用的,因为这些jar位于类路径中?有想法吗?
谢谢