2013-04-01 95 views
4

我一直在嘗試幾天,爲我的muli-module maven項目創建一個可執行的jar文件。但是,當我嘗試運行這個jar文件時,我得到「無法找到或加載主類src.main.java.com.domain.Mainclass」(爲了我公司的隱私,我更改了域名和MainClass)Maven Jar Builder:無法找到或加載主類

我搜索了幾天,沒有任何明顯的提示似乎工作。

我的項目有一個主要的maven項目,下載所有的依賴項(包裝:POM) 和幾個模塊項目(Packaging:Jar)。

一切似乎工作正常,所有的文件都編譯成類文件,但不知何故主類沒有被添加到POM。

我的POM文件的插件:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-4</version> 
    <configuration> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     <archive> 
     <manifest> 
      <mainClass>com.domain.project.MainClass</mainClass> 
     </manifest> 
     </archive> 
     </configuration> 
     <executions> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     </execution> 
     </executions> 
     </plugin> 

的命令我使用:MVN清潔包,然後我cd到目標文件夾,並做到:Java的罐子jarfilename.jar

任何提示或幫助將最受歡迎!

編輯:

我目前的配置會爲每個模塊2個jar文件:

  • 項目名稱-JAR-與-dependencies.jar
  • projectname.jar

當我使用主類導航到模塊的目標文件夾,我可以成功運行該jar文件。但是,當我嘗試運行我的父Maven項目(包裝:POM的那個)的jar文件時,我仍然得到相同的錯誤。有誰知道爲什麼主jar文件找不到主類?

謝謝!

回答

10

您不應該有src.main.java作爲主要類的包名稱的一部分。它只是默認的maven項目文件夾結構約定的一部分。您的配置應該可能爲:

<archive> 
    <manifest> 
     <mainClass>com.domain.project.MainClass</mainClass> 
    </manifest> 
    </archive> 
+0

謝謝@NilsH。我改變了你的建議,我仍然有同樣的問題。我在主文件夾中有這個(包裝:Pom)。 知道每個模塊和主項目都有一個目標文件夾,每次構建後都包含2個jar文件有幫助嗎? 1:projectname-jar -with-dependencies.jar 2:projectname.jar – Jonstewart

+0

此外,我發現我的主類模塊的目標文件夾中的jar文件將運行。任何想法爲什麼我的主要項目jar似乎沒有正確的類? – Jonstewart

+0

這工作正常。 Maven正在爲每個包裝打造一個罐子,你必須確保你使用的是正確的罐子。感謝您所有的幫助! – Jonstewart

相關問題