簡體   English   中英

如何將intellij中的普通java項目轉換為JavaFx項目

[英]How to convert a normal java project in intellij into a JavaFx project

我目前正在使用普通的java項目(gradle項目),並希望將其轉換為JavaFx項目,而無需將現有源重新導入到新的Javafx項目中。 有沒有辦法實現這個目標?

沒有什么可以轉換的。

我不相信“普通”Java項目和JavaFX項目之間的理念存在任何差異。

當然,在Idea 12.x +中,有一個可用於創建新JavaFX項目的向導。 但我認為它所做的就是創建一個示例hello world應用程序 - 在初始創建之后,項目的工作方式與任何其他Java項目沒有任何區別。

這就是它應該如何,JavaFX只是Java。 Oracle不會在其分發中區分JavaFX和Java,也不應在其項目類型中區分IDE。

我相信,在這種情況下,即使我錯了,我說得對,如果我錯了也沒關系。

更新

所以我錯了很重要:-)

使用Idea 13.1.4,如果我使用File | New Project | Java創建一個新項目 File | New Project | Java File | New Project | Java ,有以下資源設置( File | Settings | Compiler ):

?*.properties;?*.xml;?*.gif;?*.png;?*.jpeg;?*.jpg;?*.html;?*.dtd;?*.tld;?*.ftl

也就是說,項目的資源只是設置為僅復制特定的文件類型。 因此,您可以通過為fxml和css添加資源復制支持來修改它以獲取某些JavaFX項目中所需的其他文件類型; 即,附加;?*.fxml;?*.css

有趣的是,如果使用File | New Project | JavaFX創建新項目 File | New Project | JavaFX File | New Project | JavaFX ,有以下資源設置:

!?*.java;!?*.form;!?*.class;!?*.groovy;!?*.scala;!?*.flex;!?*.kt;!?*.clj

從本質上講,它復制的不是源文件,一種文件黑名單集而不是文件白名單集,而不是其他項目創建模板所使用的。 真的很奇怪......無論如何,資源集是用戶可配置的,所以你可以根據需要修改它們,一旦你這樣做,你就不應該有任何問題(我相信,但我以前錯了;-)

建議 - 將第三方構建工具與IDE結合使用

你可能最好將你的構建基於Gradle或Maven等第三方工具。 Idea使用這些外部構建工具(和其他工具)非常有效 使用第三方工具的優點是:

  1. 具有這些工具的項目遵循約定,其中資源放置在特定資源文件夾中,並且該文件夾中的所有內容都被視為要在構建輸出中打包的資源。 因此,那里的混亂更少。
  2. 由此產生的項目更加便攜,並且更容易被其他可能沒有使用Idea的開發人員使用。
  3. 可以通過像Jenkins這樣的持續集成構建系統輕松構建項目。
  4. Gradle和Maven都有JavaFX特定的插件,為打包JavaFX應用程序提供了額外的支持。

當然,使用第三方構建工具的缺點是學習它們的復雜性(以及許多怪癖),因為有時它們可​​能是相當野獸。 所以我認為這是一個權衡 - 小型,個人探索性項目不需要它們,您打算與其他人分享的大型項目或項目可以從使用這些工具中受益。

一種解決方案是使用Scene Builder生成代碼,然后將其集成到現有的IntelliJ項目中。 雖然應該可以將其作為模塊導入,但您也可以簡單地將代碼移動到需要的位置(對包語句進行適當的更正等)。 如果您發現項目中未識別出javafx導入,請嘗試以下解決方案:

首先,請確保按照本教程中的初始步驟為JavaFX設置IntelliJ。 注意:下面我提到1.8,但這應該適用於1.7+。 我推薦1.8+。

其次確保現有項目設置允許使用javaFX

  1. 打開項目結構
  2. 單擊項目設置窗格下的項目
  3. 確保Project SDK為1.8+。

第三步確保為支持JavaFX的JDK配置模塊

  1. 打開項目結構
  2. 單擊項目設置窗格下的模塊
  3. 確保使用的模塊SDK支持javaFX,我再次使用JDK 1.8,但它應該與1.7一起使用。

此外,請注意,如果您有maven項目,則可能需要將fxml放在特定位置“/ main / resources /”。 看看這個。

這對我有用,我希望它對你有所幫助。

我按照這些步驟

  • 在現有的intellij項目中創建一個新模塊(A)
  • 在別處創建一個新的JavaFx項目
  • 將JavaFx項目中的代碼,即Controller.java,Main.java and sample.fxml到src目錄下的(A)項目中的模塊中,如A/user-interface/src

在此輸入圖像描述

  • 你會在sample.fxml發現一個錯誤,因為它引用了控制器類作為sample.Controller將它改為'Controller'。 它以這種方式工作(因為我刪除了sample包文件夾

修復sample.fxml

  • 在(A)中打開設置菜單File | Project Structure | Modules File | Project Structure | Modules
  • 從設置窗口左側的列表中選擇user-interface模塊
  • 切換到dependencies選項卡
  • 使用右側的綠色+標記將舊的非gui模塊添加為模塊依賴項
  • 現在你可以使用非gui模塊中的類,享受吧!

注意:你可以跳過添加模塊的依賴關系,讓intellij為你做,只需在舊模塊中鍵入一個類的名稱, alt+enter (燈泡魔術) - > add module depenency

模塊依賴窗口

請記住,您的源文件夾必須正確設置。 看截圖來了解我的意思..

在此輸入圖像描述

所以經過大量的谷歌搜索,我終於找到了自己!

如果你可以在Intellijd中創建新的Javafx項目並且它工作得很好,但是當你打開一個正常的java應用程序時碰巧使用javafx不起作用,(因為java只是不想解析javafx引用)

對我 "jre/lib/ext/jfxrt.jar" 是:你必須將"jre/lib/ext/jfxrt.jar"文件添加到我的Windows機器上IDEA內的模塊類路徑,這是C:\\Program Files\\JetBrains\\IntelliJ IDEA Community Edition 2018.3.3\\jre64\\lib\\ext\\jfxrt.jar

現在它終於建立了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM