![](/img/trans.png)
[英]JavaFX with Maven works with exec:java but not in the jar at runtime
[英]Maven exec works, but java -jar does not
我有一個只有一個依賴項的簡單Maven項目。 我可以安裝它並通過Exec Maven插件在命令行中運行它:
mvn exec:java -D"exec.mainClass"="com.MyClass"
打包后,maven在我的目錄中生成一個.jar文件。 在Maven JAR插件的幫助下,我明確了自己的清單,以了解我的main
方法類。 看起來像:
...
Created-By: Apache Maven 3.3.1
Build-Jdk: 1.8.0_66
Main-Class: com.MyClass
現在,我想使用java
命令像常規的Java可執行文件一樣運行此.jar文件,但是請執行以下操作:
java -jar myFile.jar
它給出了關於我唯一的依賴關系的錯誤java.lang.NoClassDefFoundError
。
我如何使Maven將所有依賴項添加到我的可執行jar文件中?
您可以使用Apache Maven Assembly Plugin來創建具有所有依賴項的jar,因此pom.xml應該如下所示:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>mypackage.myclass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
希望對您有幫助,再見。
實現此目的的一種方法是使用Apache Maven Shade插件 :
該插件提供了將工件打包(包括其依賴項)並遮蔽(即重命名)某些依賴項的包的功能。
對於具有許多依賴性的大型項目,此插件具有一些優點。 此處對此進行了解釋: Maven插件之間的區別(assembly-plugins,jar-plugins,shaded-plugins)
在我的項目中,我將其用於以下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.xxx.tools.imagedump.ImageDumpLauncher</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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.