我目前正在使用一个普通的Java项目(Gradle项目),想将其转换为JavaFX项目,而不必重新导入现有的源代码到新的JavaFX项目中。是否有办法实现这一点?
我目前正在使用一个普通的Java项目(Gradle项目),想将其转换为JavaFX项目,而不必重新导入现有的源代码到新的JavaFX项目中。是否有办法实现这一点?
没有需要转换的内容。
我认为在“普通”的Java项目和JavaFX项目之间没有任何思想差异。当然,在Idea 12.x+中,您可以使用向导创建新的JavaFX项目。但是我认为它所做的只是创建一个示例helloworld应用程序-在初始创建之后,项目的工作方式与任何其他Java项目没有区别。这就是应该的方式,JavaFX只是Java。Oracle在其分发中不区分JavaFX和Java,IDE在其项目类型中也不应该区分。
我相信,在这种情况下,即使我错了,我的正确程度也足够高,如果我错了,那其实也无关紧要。
更新
所以我错得足够让事情变得重要 :-)
使用Idea 13.1.4,如果我使用文件| 新建项目| Java
创建新项目,则有以下资源设置(文件|设置|编译器
):
?*.properties;?*.xml;?*.gif;?*.png;?*.jpeg;?*.jpg;?*.html;?*.dtd;?*.tld;?*.ftl
也就是说,该项目的资源仅被设置为仅复制特定文件类型。因此,您可以通过添加用于fxml和css的资源复制支持来修改它,以获取某些JavaFX项目所需的其他文件类型;即,附加;?*.fxml;?*.css
。
有趣的是,如果您使用 File | New Project | JavaFX
创建新项目,则有以下资源设置:
!?*.java;!?*.form;!?*.class;!?*.groovy;!?*.scala;!?*.flex;!?*.kt;!?*.clj
基本上,它会复制除了源文件之外的所有东西,这是一种文件黑名单集,而不是其他项目创建模板使用的文件白名单集。非常奇怪...不过,资源集是可由用户配置的,所以您可以根据需要进行修改,一旦修改完成,就不应该再有任何问题(我相信,但我以前也犯过错;-)
建议-结合IDE使用第三方构建工具
你可能更好地将你的构建基于 Gradle 或 Maven 等第三方工具。Idea 与这些外部构建工具(和其他工具)配合使用效果非常好。使用第三方工具的优点是:
当然,使用第三方构建工具的缺点是学习它们的复杂性(和许多怪癖),有时它们可能非常棘手。所以我认为这是一个权衡 - 小型、个人探索项目不需要它们,而较大的项目或您打算与他人共享的项目则从使用此类工具中受益。
在经过大量的谷歌搜索后,我终于自己找到了答案!
如果您可以在IntelliJ中创建新的Javafx项目,并且它可以完美地工作,但是当您打开一个普通的Java应用程序并且恰好使用了JavaFX时,它就不起作用(因为Java不想解析JavaFX引用)
对我有效的方法是:
您必须将"jre/lib/ext/jfxrt.jar"
文件添加到位于我的Windows机器上的IDEA内部的模块类路径中,这是C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.3.3\jre64\lib\ext\jfxrt.jar
。
现在终于建立成功了!
Controller.java、Main.java和sample.fxml
复制到(A)项目中的模块下src目录中,例如A/user-interface/src
sample.fxml
中发现一个错误,因为它将控制器类引用为 sample.Controller
,请将其更改为仅使用 'Controller'。这样做可以使其正常工作(因为我删除了 sample
包文件夹)。文件|项目结构|模块
用户界面
模块依赖项
选项卡+
标记将旧的非GUI模块添加为模块依赖项注意:您可以跳过添加模块依赖项并让IntelliJ为您完成,只需在旧模块中键入类名,alt+enter
(魔法灯泡)->添加模块依赖项
此外,请注意,如果您有一个maven项目,您可能需要将fxml放在特定位置“/main/resources/”。请查看this.
这对我有用,希望对您有所帮助。
!?*.java;!?*.form;!?*.class;!?*.groovy;!?*.scala;!?*.flex;!?*.kt;!?*.clj;!?*.aj
,即使它只是一个普通的Java项目。 - Keldon Alleyne