2017-07-18 78 views
0

我创建了一个maven项目。它运行良好。现在我想通过jar运行我的代码。在maven构建之后,我在.m2文件夹中获得了一个jar文件。当我尝试使用运行jar时没有主清单属性错误

java -jar“jar path” 在“jar路径”中没有获得主清单属性时。

我的pom.xml的是

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.3</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 

    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.2.1</version> 
     <configuration> 
      <mainClass>main.Application</mainClass> 
     </configuration> 
    </plugin> 

     </plugins> 
</build> 

请建议如何克服掉问题。

回答

0

现在我想通过罐子

exec-maven-plugin是一个Maven构建过程中执行的程序来运行我的代码。
你不想要它。
作为一个附注,你没有为它指定任何目标。
所以,它什么都不会做。

你想打包你的jar的方式,它是可执行的。
因此,使用相当的maven-jar-plugin

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <archive> 
      <manifest> 
        <mainClass>main.Application</mainClass> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 

要创建的,而不是用在POM中指定的依赖关系的JAR,使用maven-assembly-pluginjar-with-dependenciesdescriptorRef

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
     <archive> 
      <manifest> 
      <mainClass>main.Application</mainClass> 
      </manifest> 
     </archive> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 
+0

我做了修改建议,但现在我得到java.lang.NoClassDefFoundError错误。由于项目POM包含依赖项,但我的jar似乎没有这些依赖项。 – vijay

+0

因为你的项目有一些外部的依赖关系。在这种情况下,您可以使用maven-assembly-plugin。我编辑说明。 – davidxxx

+0

谢谢大卫。但它也没有帮助。 我已经加入下面插件 \t \t \t \t 遮阳 它解决了我的问题,但得到与不同的名字的罐子。 – vijay

相关问题