2013-05-14 72 views
1

我嘗試了以下各種教程,以獲取在瀏覽器中運行的JavaFX Hello World應用程序。我不敢相信這很難,所以我正在尋找任何我可能做錯了什麼的洞察力。有些事情我已經試過和解決(排除明顯):讓JavaFX通過瀏覽器運行以獲得簡單的HelloWorld應用程序

  • 必須下載32位JRE的瀏覽器,並確保他們使用
  • 因此採用了最新的JRE(7u21);在Win 7上運行64位
  • 經過Windows控制面板 - >程序 - > Java來驗證JRE使用
  • 簽名的JAR文件
  • 試圖從本地文件運行時,發現驅動器號無法識別,所以移動到通過Tomcat運行6
  • 嘗試對代碼庫和url hrefs進行各種更改,但我相信這些都是正確的。
  • 在IE 10和Chrome

我最終什麼了嘗試是加載的.html(引用使用JavaFX的默認JavaScript中的JNLP)將旋轉了一會兒,然後失敗。如果我嘗試直接加載.jnlp文件,我得到一個異常:

ClassNotFoundException: javafx.application.Application 

我驗證了jfxrt.jar是在JRE的lib文件夾的瀏覽器使用。

對於我現在可能錯過的任何見解/建議?似乎它在這一點上一定是明顯的/基本的,但我沒有看到它。謝謝。

+0

你可以顯示你的Manifest文件嗎? – Puce 2013-05-14 17:04:55

回答

-1

我能夠主要解決我的問題。我使用的是Eclipse,而不是NetBeans,所以手動做了很多。基本問題是我必須將jfxrt.jar作爲資源包含在jnlp文件中(並且該jar也必須被簽名)。

我的應用程序現在運行,如果我直接訪問jnlp,雖然它仍然無法通過html頁面工作。我將在發佈更新時發佈更新。

+1

我們不推薦手動編輯JavaFX的jnlp文件。如果您使用Eclipse進行開發,則最好使用[e(fx)clipse](http://www.efxclipse.org/)。您還應該考慮一些額外的工具支持,例如[JavaFX ant任務或JavaFX打包程序](http://docs.oracle.com/javafx/2/deployment/jfxpub-deployment.htm)或JavaFX Maven或Gradle插件。 – jewelsea 2013-05-15 06:14:23

+0

@ user1676075我不認爲這是要走的路。看到我的答案。 – Puce 2013-05-15 08:10:18

+0

我意識到使用這些工具將是最簡單的方法。但是我想真正理解到底發生了什麼,這對我來說意味着手工完成這些步驟,而沒有一種工具可以將任何部分從我身上隱藏起來。一旦我明白了,那麼我可以讓工具來完成這項工作。 – user1676075 2013-05-15 16:25:48

0

這聽起來像您在JAR中沒有JavaFX啓動器類(通常由Ant腳本完成)並且沒有正確的JavaFX Manifest條目。

不應該需要將jfxrt.jar作爲資源添加到您的JNLP文件,而不應該對其進行簽名。

請顯示您的Manifest文件。

清單文件應包含至少以下JavaFX的條目:在罐

JavaFX-Version: 2.2 
JavaFX-Application-Class: yourPackage.YourApplication 
Main-Class: com/javafx/main/Main 

的JAR應包含由螞蟻javafx.jar提供的com.javafx.main包中的類(參見/資源/類)。 ant-javafx.jar由JDK提供。

+0

我沒有做任何明確的清單文件,所以我只有自動生成的內容。我可以發佈,但它可能無濟於事。如果javafx打包工具添加到它中,這屬於我希望瞭解的事情,並且知道它爲我做了些什麼。 – user1676075 2013-05-15 16:26:59

+0

其實如果你想在普通瀏覽器中運行javafx,那麼我們必須跟進Manifest文件。您需要將jfxrt.jar保存在您的類路徑中。確保你使用JavaFX項目而不是Java項目編譯Netbeans。 – privatejava 2013-05-19 08:42:39

+0

@privatejava不,如果您使用的是我提到的Main類,則不必將jfxrt.jar添加到您的類路徑(手動)AFAIK。 – Puce 2013-05-19 13:57:04

1

爲了跟進,我繼續使用javafxpackager。這產生了一個可以在Chrome中加載JavaFX應用程序的網頁。但是,它在IE中仍然不起作用。我打算把它寫成IE,但是因爲它在Chrome中運行。然而,我通過查看結果學到了javafxpackager所做的幾件事情,其結果與大多數手冊教程/示例中描述的內容不完全相同。微小的差異,但顯然他們很重要。

相關問題