2012-11-20 35 views
0

我試圖製作一個可執行的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在那裏!

感謝您的幫助。

+1

你是如何運行它的?你的類路徑是什麼? –

+0

嗨戴夫,我試圖運行它使用'java -jar myapplication.jar'當我得到錯誤。類路徑似乎由Maven在MANIFEST.MF文件中自動生成,格式爲:'Class-Path:aaa.jar bbb.jar ccc.jar' - 這些是由Maven自動下載的jar文件,因爲它們是依賴於該項目。 – user1838292

+0

也許我午飯後有點困惑,但爲什麼你要在編譯階段執行jar目標? – Puce

回答

0

我不知道這是否是這個問題的原因,是因爲該錯誤信息不適合,但要注意,罐子選項狀態的文檔:

「當你使用這個選項, JAR文件是所有用戶類的來源,而其他用戶類路徑設置將被忽略。「

所以我懷疑

Class-Path: aaa.jar bbb.jar ccc.jar 

會工作。

相關問題