无法找到XML模式命名空间的Spring NamespaceHandler http://www.springframework.org/schema/data/jpa

Arr*_*rry 14 java spring maven spring-data-jpa

我在我的java项目中使用spring和hibernate,它由maven管理.我使用以下命令创建了一个程序集(带有依赖项的jar)mvn install assembly:assembly

现在,当我尝试使用命令运行我的主类时:java -cp xyz-1.0-SNAPSHOT-jar-with-dependencies.jar com.xyz.class然后我收到以下错误:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/data/jpa]**
Offending resource: class path resource [xyz-component-scans-config.xml]

    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(DefaultBeanDefinitionDocumentReader.java:271)
.
.
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它无法找到NamespaceHandler?因为我已经在pom中有以下依赖项.

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>3.1.0.RELEASE</version
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-jpa</artifactId>
      <version>1.0.2.RELEASE</version>
      <type>jar</type>
      <scope>compile</scope>
    </dependency> 
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>3.1.0.RELEASE</version>
      <scope>compile</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我确实尝试了以下主题中的建议,但它对我不起作用. 无法找到XML架构命名空间的Spring NamespaceHandler [http://www.springframework.org/schema/data/jpa]

org.springframework.beans.factory.parsing.BeanDefinitionParsingException的源代码

axi*_*sty 13

您可能最好使用maven-shade-plugin来创建具有依赖关系的jar.以下是如何使用插件的示例:

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>2.1</version>
          <executions>
            <execution>
              <phase>package</phase>
              <goals><goal>shade</goal></goals>
              <configuration>
                <transformers>
                  <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                    <mainClass>com.stackexchange.stackoverflow.ExecutableJar</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>
Run Code Online (Sandbox Code Playgroud)

根据我的经验,maven-shade-plugin是创建超级jar的最佳方式.有关更完整的示例,请参阅我的其他SO答案.请注意,此示例不需要任何第三方jar,但maven-shade-plugin确实可以很好地处理它们.试一试!:-)


zmf*_*zmf 1

我为此使用了 [one-jar] 插件(https://code.google.com/p/onejar-maven-plugin/ )。

我也遇到了同样的问题;即 Maven 程序集弄乱了我的 spring.schema 文件。(Maven 的插件已知可以执行此操作(来自遇到相同问题的另一个人的 Spring 论坛链接))。

如果您确实想知道这里发生了什么,请展开 .jar 文件并查看 spring.schema 和 spring.handlers 文件。查看maven的程序集插件的产品,阅读这篇(需要了解spring.handlers和spring.schemas)堆栈溢出帖子,其中解释了如何使用这些文件。


归档时间:

查看次数:

12681 次

最近记录:

6 年,7 月 前