我試圖製作一個可執行的JAVA程序。此程序的源代碼在源文件夾中有許多不同的軟件包。當我在下面的pom.xml文件中設置mainClass屬性並將它作爲maven構建運行時,它的目標是'包',它會創建myapplication.jar。當我嘗試使用在Eclipse中使用Maven創建一個帶mainClass的java應用程序 - '找不到主類'
java -jar myapplication.jar
打開它,我得到的消息:
「找不到主類:xxx.yyy.MainClass。程序將會退出。
下面是我的pom.xml文件的摘錄:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>xxx.yyy.MainClass</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-a-jar</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
和內MainClass.java(在包裝xxx.yyy)我有:
public static void main(String[] args) {
// My Code
}
如果我解壓JAR文件並查看META-INF文件夾中的MANIFEST.MF文件,它包含以下行:
Main-Class: xxx.yyy.MainClass
Class-Path: aaa.jar bbb.jar ccc.jar
其中,aaa.jar,bbb.jar和ccc.jar是Maven自動下載的jar文件,因爲項目對它們有依賴性。 這兩行絕對以換行符結束。
另外,當我瀏覽到相對於解壓縮JAR的文件夾xxx/yyy/MainClass.class在那裏!
感謝您的幫助。
你是如何運行它的?你的類路徑是什麼? –
嗨戴夫,我試圖運行它使用'java -jar myapplication.jar'當我得到錯誤。類路徑似乎由Maven在MANIFEST.MF文件中自動生成,格式爲:'Class-Path:aaa.jar bbb.jar ccc.jar' - 這些是由Maven自動下載的jar文件,因爲它們是依賴於該項目。 – user1838292
也許我午飯後有點困惑,但爲什麼你要在編譯階段執行jar目標? – Puce