2012-07-13 53 views
1

我試圖運行我的第一個Java程序,這是一個與在線API交互的示例腳本(Github上的source)。執行測試後的Java示例並使用Maven進行打包

因爲它有依賴關係,所以我遵循使用mvn testmvn package的推薦步驟,這似乎有效(請參閱output)。

但是我不明白如何運行我剛剛編譯(或打包的?)的程序。該.java文件包含public final class NesstarStudyLister,因此基於該pom.xml文件我嘗試(在基本目錄)以下命令:

[email protected]:~/tmp/nesstar-api-demo$ java -cp target/nesstar_study_lister-1.0-SNAPSHOT.jar com.nesstar.demo.NesstarStudyLister

其中resultsNoClassDefFoundError

如何成功運行小型Java程序?

編輯

基於戴夫·牛頓的建議,我用了Exec Maven plugin,這顯然只是由在基本目錄,這完美地執行Java程序運行

mvn exec:java -Dexec.mainClass=com.nesstar.demo.NesstarStudyLister 

的。

由舍甫琴科Plokhotnyuk該解決方案也適用,使用以下命令:

(edit pom.xml to include the <build>...</build> information) 
mvn package 
java -jar target/nesstar_study_lister-1.0-SNAPSHOT-jar-with-dependencies.jar 

回答

2

最簡單方式一般是Exec Maven Plugin

果殼:

  • 添加Exec插件的依賴。
  • 定義主要的類屬性(程序的入口點)。
  • 運行exec目標。

您也可以使用Maven創建一個包含項目依賴關係(jar)的目錄並手動設置類路徑,但IMO可能會使用該插件時非常痛苦。

您也可以創建一個包含所有項目的依賴項在一個文件中,但這可能需要更多的工作來明確包含/排除任何衝突的依賴關係。 (要注意的是,這可能是其他方法的問題。)

0

你需要創建一個可執行的JAR文件,然後使用Java的罐子文件目錄/ fileName.jar

+1

我認爲本質上是什麼OP是基於命令行上做,提供。它還需要生成/打包適當的清單。 – 2012-07-13 17:36:16

2

添加以下插件配置準備可執行的JAR:

<project> 
.... 
    <build> 
     <plugins>  
      <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>single</goal> 
        </goals> 
        <phase>package</phase> 
        <configuration> 
         <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs> 
         <archive> 
          <manifest> 
           <mainClass>com.nesstar.demo.NesstarStudyLister</mainClass> 
          </manifest> 
         </archive> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

     </plugins> 
    </build> 
    ... 
</project> 

,則跳轉目標目錄,然後運行:

java -jar nesstar_study_lister-1.0-SNAPSHOT-jar-with-dependencies.jar