Ошибка при запуске JAR, созданного плагином Maven Assembly

Я работаю над проектом Eclipse/Spring/Maven. Мой pom.xml выглядит так:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.javacodegeeks.snippets.enterprise</groupId>
  <artifactId>springexample</artifactId>
  <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <build>
    <plugins>
     <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>package-jar-with-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <appendAssemblyId>false</appendAssemblyId>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                            <archive>
                                <manifest>
                                    <mainClass>com.javacodegeeks.snippets.enterprise.App2</mainClass>
                                </manifest>
                            </archive>
                            <resources>
                                  <resource>
                              <directory>src/main/resources</directory>
                              <filtering>true</filtering>
                                  </resource>
                          </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
</plugins>


              </build>        
          <dependencies>
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-core</artifactId>
              <version> 3.2.4.RELEASE</version>
              </dependency>
              <dependency>
                  <groupId>com.rapplogic</groupId>
                  <artifactId>xbee-api</artifactId>
                  <version> 0.9</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-context</artifactId>
                  <version>3.2.4.RELEASE</version>
              </dependency>

              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-orm</artifactId>
                  <version>3.2.4.RELEASE</version>
              </dependency>
              <dependency>
                  <groupId>commons-dbcp</groupId>
          <artifactId>commons-dbcp</artifactId>
          <version>1.2.2</version>
      </dependency>
      <dependency>
          <groupId>javax.persistence</groupId>
          <artifactId>persistence-api</artifactId>
          <version>1.0</version>
      </dependency>
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.6</version>
      </dependency>
        <dependency>
            <groupId>jfreechart</groupId>
            <artifactId>jfreechart</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>jcommon</groupId>
            <artifactId>jcommon</artifactId>
            <version>0.9.5</version>
        </dependency>
        <dependency>
            <groupId>org.graphstream</groupId>
            <artifactId>gs-core</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.graphstream</groupId>
            <artifactId>gs-ui</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.graphstream</groupId>
            <artifactId>gs-algo</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
      </dependency>
      <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-core</artifactId>
          <version>4.1.9.Final</version>
      </dependency>           
      <dependency>
          <groupId>org.rxtx</groupId>
          <artifactId>rxtx</artifactId>
          <version>2.1.7</version>
      </dependency>
        <dependency>
            <groupId>org.bidib.jbidib.org.qbang.rxtx</groupId>
            <artifactId>rxtxcomm</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>4.0.0.RELEASE</version>
      </dependency>
    </dependencies>
</project>

Мое applicationContext.xml выглядит так:

<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"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd"> 
.
.
.

я делаю mvn install а потом mvn package, Я получаю вывод как springexample-0.0.1-SNAPSHOT.jar в целевой директории проекта. Затем я набираю команду java - jar springexample-0.0.1-SNAPSHOT.jar и получите следующую ошибку:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Config
uration problem: Unable to locate Spring NamespaceHandler for XML schema namespa
ce [http://www.springframework.org/schema/tx]
Offending resource: class path resource [applicationContext.xml]

Просматривая похожие проблемы через Интернет, я обнаружил два возможных источника ошибки:

  1. Не указывать библиотеку Spring для обработки пространства имен (spring-tx) - выполнено (включено в зависимости) 2.Не указывать applicationContext.xml в ресурсах плагина сборки maven - выполнено (тег ресурсов включен в конфигурацию плагина).

После этого я не знаю, в чем может быть проблема. Любая помощь приветствуется, спасибо.

2 ответа

Попробуйте добавить это вместо 4.0.0.RELEASE:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version> 3.2.4.RELEASE</version>
</dependency>

а затем сделать mvn clean install

Я только что столкнулся с почти такой же проблемой (приложение работало с моей IDE, но не с использованием сгенерированного файла jar). Я решил это, добавив опцию <Multi-Release>true</Multi-Release>. Этот параметр указывает, что ваш java-файл Uber может содержать различные версии Java-файлов Java.

      <archive>
  <manifestEntries>
    <Multi-Release>true</Multi-Release>
  </manifestEntries>
  <manifest>
    <mainClass>com.javacodegeeks.snippets.enterprise.App2</mainClass>
  </manifest>
</archive>

Подробнее см. https://maven.apache.org/plugins/maven-compiler-plugin/multirelease.html .

Другие вопросы по тегам