天天看點

macOS系統使用Java指令運作項目,報錯:target/XXX-1.0-SNAPSHOT.jar 中沒有主清單屬性

在macOS系統終端輸入Java指令運作項目:

➜   java -jar target/XXX-1.0-SNAPSHOT.jar

target/XXX-1.0-SNAPSHOT.jar 中沒有主清單屬性

macOS系統使用Java指令運作項目,報錯:target/XXX-1.0-SNAPSHOT.jar 中沒有主清單屬性

  —— 瘋狂百度了一天,找了很多很多方法,最終主要原因是出在 pom.xml檔案中,需要在此檔案中指定下運作的主函數,手動定位到主類。

由于之前運作項目都是在 IDEA直接跑某個具體的java類,是以不需要指定。但在終端使用 java指令跑就不一樣了,需要指定。

是以需要在此pom.xml檔案添加以下内容:(紅色部分為新添加的内容)

<build>
        <finalName>XXX-1.0-SNAPSHOT</finalName> <!-- 導出的jar的名字 -->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.XXX.XXX.Run</mainClass>
                                    <!-- 主類的位置,例如上圖檔案,主類配置應為: -->
                                    <!-- <mainClass> import的包.運作的主函數</mainClass> -->
                                </transformer>
                            </transformers>
                            <encoding>utf-8</encoding>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>      

 添加後儲存pom.xml檔案,然後再次編譯、運作項目,可以跑起來了,不會報 “target/XXX-1.0-SNAPSHOT.jar 中沒有主清單屬性 ”的錯了。