2012-11-15 75 views
1

最近我在NetBeans中開發了一個相當簡單的GUI應用程序,並且在我進一步開發之前,我決定在另一臺計算機上測試應用程序,因爲我不知道分發應用程序的很多事情,並且想確保我在做對的。爲什麼我的jar文件在我的電腦上完美工作,但不在另一臺電腦上工作?

在NetBeans中運行良好,當我點擊運行 - >清理並生成項目它創建如預期在我的項目的dist文件夾.jar文件。當我從dist文件夾在我的計算機上運行.jar文件時,它按預期運行。

然後我試圖在另一臺計算機上運行它幾種不同的方式(從閃存驅動器),其中沒有一個工作:

  1. 只複製jar文件到我的閃存驅動器,試圖運行它,得到一個錯誤說「找不到主要類:MyApplicationPackage.MyApplication。程序將退出」。

  2. 在NetBeans中點擊文件 - >導出項目 - >拉上......和複製的壓縮文件夾到我的閃存驅動器。當我在另一臺計算機上解壓文件時,沒有dist文件夾(我並不真的希望有一個文件夾)。

  3. 複製整個項目文件夾到我的閃存驅動器,並嘗試運行在其他計算機上的jar文件,生成相同的錯誤消息。

我怎樣才能讓它在其他計算機上運行?有沒有更簡單的方式來分發應用程序?我不指望普通人知道如何解壓文件,找到dist文件夾,然後運行jar文件。我能否以某種方式將所有內容組合成一個可運行的文件?

編輯:我自己找到了解決方案:其他計算機上的java版本不是當前版本。爲了使應用程序運行,我打開了項目的屬性窗口,在「Sources」選項卡下,在底部附近有一個選項,顯示「源/二進制格式」。將它更改爲早期版本的Java讓它可以在其他計算機上運行。另一個(也是更好的)選項是在另一臺計算機上升級到當前版本的Java。

回答

1

你必須檢查是否有一個MANIFEST文件,該文件將指示主要類的位置。

如果你正在使用maven,你可以使用裝配插件,它會與您指定的參數生成清單文件。

<plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
       <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <archive> 
         <manifest> 
           <addClasspath>true</addClasspath> 
           <mainClass>com.blabla.Main</mainClass> 
         </manifest> 
         <manifestEntries> 
           <SplashScreen-Image>splashscreen.png</SplashScreen-Image> 
         </manifestEntries> 
       </archive> 
     </configuration> 

</plugin> 

編輯:

+0

我打開jar文件,7-ZIP,發現其中包含以下MANIFEST.MF文件中:Manifest-版本: 1.0 Ant-Version:Apache Ant 1.8.3 創建者:1.7.0-b147(Oracle Corporation) 類路徑: X-COMMENT:Main-Class將通過build 自動添加Main-Class:MyApplicationPackage.MyApplication因此,MANIFEST.MF文件確實指出了主類的位置。我不知道Maven是什麼,或者你發佈的代碼是什麼意思,你能解釋你對我的問題的迴應嗎?並且我很抱歉不知道如何在此評論中添加換行符以使其更具可讀性。 –

相關問題