[英]maven didn't add main-class properly
我想用maven編譯我的Java-Project,但它沒有將main-class添加到manifest文件中。 所以我不能在intellij之外運行jar。 我已將main-class添加到我的pom.xml中,但它沒有顯示在清單文件中。
我在Win10機器和maven3(IntelliJ IDEA 2018.3.1 / plugins / maven / lib / maven3)上使用intellij的構建功能。
如果我運行jar我得到錯誤
$java -jar myJar.jar
kein Hauptmanifestattribut, in myJar.jar
(德語為: 沒有主要的清單屬性,在myJar.jar中 ,我不知道確切的英文翻譯,但它意味着: 沒有指定主類 )
我已經嘗試了幾個maven插件(maven-compile,maven-jar,maven-shade)以及指定main-class的方法,但是沒有將它們添加到manifest文件中。 讓這個工作的唯一方法是當我添加線
Main-Class: Main
用手。
我的pom文件(是的,我的主類稱為Main ,是的,當我手動添加它時它工作正常)
...
<groupId>com.myname</groupId>
<artifactId>myProject</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
清單文件
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dspicuzz
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_65
如果我手動添加該行,它運行正常
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dspicuzz
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_65
Main-Class: Main
但我不能讓maven以這種方式為我生成它。
我在Win10機器和maven3(IntelliJ IDEA 2018.3.1 / plugins / maven / lib / maven3)上使用intellij的構建功能。
IntelliJ的構建不會重新生成您的jar文件。 嘗試運行包目標以重新創建jar文件。
驗證您的包名稱是否與您的目錄結構匹配: com.mytest.Main
如果沒有包,它也可以工作,但要確保目錄結構也沒有包結構。
這將有效:
的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.myname</groupId>
<artifactId>runnable</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.myname.Hello</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project>
Hello.java
package com.myname;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello");
}
}
跑:
C:\runnable>java -jar target\runnable-1.0-SNAPSHOT.jar
Hello
而且,這是maven-jar插件生成的清單文件:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: egallardo
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_181
Main-Class: com.myname.Hello
還要檢查您的sources目錄是否在intellij中正確標記(淺藍色)此圖像適用於無包裝版本。
這些是關於如何使用IntelliJ從頭開始創建項目的分步說明:
<build>
和<properties>
部分復制並傳遞到pom.xml文件 java -jar C:\\code\\java\\runnable\\target\\runnable-1.0-SNAPSHOT.jar
檢查jar文件日期是否與單擊包的時間相匹配。 如果上述方法無效,您可能會發現錯誤。 嘗試不同的JDK版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.