2013-03-22 136 views
0

我創建了一個包含名爲JavaFX的外部程序包的小應用程序。該軟件包包含4個jar文件。 當我從命令行創建一個jar到當前目錄時,jar執行OK(從4個jar中導入類)。但是當我從另一個目錄中移動該jar文件時,該文件將不會執行。換句話說,創建的jar似乎無法找到這些jar文件中的類(JavaFX jar)?Jar文件的清單類路徑

下面是清單文件:

Main-Class: QuizMenu  
Class-Path: 
deploy.jar 
javaws.jar 
jfxrt.jar 
plugin.jar 

文本文件確實從包含在開始和一個空間的罐子的每一行的端部,和在最後一行的最終回車(每一行分開最後一行不包含回車符)。此外,Main-Class:標題的工作正常。 (只是類路徑似乎不工作)。

任何人都可以識別文件的問題?

+0

即使移動後,jar文件是否與應用程序jar文件在同一個文件夾中? – 2013-03-22 18:48:45

+1

庫文件的路徑都是相對的,這些庫需要與jar文件位於同一文件夾中。您可能要考慮使用maven或ant來將eveything打包在一起。 – 2013-03-22 18:49:44

+0

是的,他們在同一個文件夾中。如果我確實將這些包裝罐與創建的罐子一起移動,那麼罐子將會執行。 你是如何表示親屬?因爲在外部罐子應該在一個單獨的文件夾,並找到他們在類路徑? – 2013-03-22 19:34:48

回答

0

建議

你不應該涉及任何這些(deploy.jar javaws.jar jfxrt.jar plugin.jar) jar文件在你的mainifest文件。


JavaFX的包裝工具

相反,你應該使用JavaFX的認識deployment tools如:

  1. javafxpackager
  2. JavaFX ant tasks
  3. JavaFX maven plugin
  4. JavaFX gradle plugin
  5. NetBeans JavaFX project
  6. 其他兼容的工具可能會在未來出現。

上述工具將適當地打包您的應用程序以使用JavaFX。


背景

如果您嘗試當您運行在不同的Java版本的應用程序(如Java 8捆綁了JavaFX,Java的部署和Java插件的jar文件與應用程序,然後或9),它可能無法正常工作,因爲將來的所有版本中的JavaFX都將被定義爲Java運行時平臺的一部分,而不是作爲單獨安裝的庫或可與獨立於Java運行時的其他應用程序捆綁在一起的庫。

此外,諸如jfxrt.jar之類的jar文件依賴於衆多的本地動態鏈接庫(.so,.dll等),這些庫因平臺而異,並且具有32位和64位的變體。爲了使jfxrt.jar(例如JavaFX)正常工作,jfxrt.jar的版本必須與底層本機庫的版本(以及相應平臺的底層本機庫必須可供動態負載鏈接程序使用)匹配。

+0

好的非常感謝你的答覆。我將研究這些鏈接,最好是NetBeans鏈接。 – 2013-03-22 20:13:18