我实际上花了很长时间才注意到。当我在 netbeans 中运行该项目时,它按预期工作。但是,当我执行 Build
时,我得到的 PROJECTNAME-1.0-SNAPSHOT.jar
文件没有执行任何操作。打开包装后,它看起来像这样:
这很可疑,在 Maven 之前,我编译的文件看起来像这样:
Main
类不应该位于 jar 文件根目录中吗? JVM 如何知道要运行哪个主类?
MANIFEST.MF 也有一些令人不安的地方:
旧 list
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.1
Created-By: 1.7.0_45-b18 (Oracle Corporation)
Class-Path: lib/alloy.jar lib/jna-platform.jar lib/jna.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: Main
新 list
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: Jakub
Build-Jdk: 1.8.0_31
似乎缺少Main-Class
条目...
最佳答案
使用maven-jar-plugin使您的 jar
可执行。对我来说,实际代码如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>my.main.class</mainClass>
</manifest>
</archive>
<outputDirectory>${project.build.directory}/result</outputDirectory>
</configuration>
</plugin>
也有用 exec-maven-plugin :
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<mainClass>my.main.class</mainClass>
<!--
<commandlineArgs>-d 5409 -c 467 -t 2 -dlg true</commandlineArgs>
-->
</configuration>
</plugin>
关于java - 转移到maven后,我编译的jar文件无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29075775/