无法在Spring中创建可执行的Jar

时间:2018-02-10 10:05:37

标签: java spring mongodb maven jar

我有一个spring项目,我连接到mongodb做一些CRUD操作。我已经在Netbeans中构建了我的项目并且它工作正常但是当我想制作可执行jar文件时,我用`mvn包编译项目没有错误。我的jar文件执行util到行

ApplicationContext ctx = new GenericXmlApplicationContext("classpath:spring/SpringConfig.xml");

但是从上面的一行我得到了这个错误:

  

线程“main”中的异常org.springframework.beans.factory.parsing.BeanDefinitionParsingException:配置问题:无法找到XML架构命名空间的Spring NamespaceHandler [http://www.springframework.org/schema/data/mongo]   违规资源:类路径资源[spring / SpringConfig.xml]   在org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)       在org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)       在org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:80)       在org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:318)       在org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1435)       在org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)   .....

这是我的pom.xml的一部分

<build>
    <finalName>mehdi</finalName>
    <plugins>

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>org.faracloud.runner.App</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>

另外,这是弹簧配置文件

<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"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context-3.0.xsd
      http://www.springframework.org/schema/data/mongo
      http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<mongo:mongo host="192.168.1.5" port="27017" />
<mongo:db-factory dbname="mydb" mongo-ref="mongo" username="user1"
    password="1234" />

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean>

最佳专家

2 个答案:

答案 0 :(得分:1)

如何在项目中定义mongo驱动程序?还有maven?

如果您有一个文件(可能是mehdi-jar-with-dependecies.jar)尝试打开它,(jar是一个zip格式的文件,所以这只是解包)并找到必要的驱动程序/类。

可能mongo驱动程序在Netbeans中可用,但在Jar文件中不存在。

答案 1 :(得分:0)

我使用了这个插件并解决了问题:

  <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <configuration>
                <mainClass>xxx.App</mainClass>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>appassembler-maven-plugin</artifactId>
            <version>1.3</version>
            <configuration>
                <programs>
                    <program>
                        <mainClass>xxx.App</mainClass>  

                    </program>                      
                </programs>
            </configuration>
        </plugin>