【发布时间】:2014-06-18 17:39:25
【问题描述】:
我目前正在使用一个普通的 java 项目(gradle 项目),并希望将其转换为 JavaFx 项目,而无需将现有源重新导入到新的 Javafx 项目中。有什么方法可以实现吗?
【问题讨论】:
标签: java user-interface intellij-idea javafx-2
我目前正在使用一个普通的 java 项目(gradle 项目),并希望将其转换为 JavaFx 项目,而无需将现有源重新导入到新的 Javafx 项目中。有什么方法可以实现吗?
【问题讨论】:
标签: java user-interface intellij-idea javafx-2
没有什么可以转换的。
我认为“普通”Java 项目和 JavaFX 项目之间的 Idea 没有任何区别。
当然,在 Idea 12.x+ 中有一个向导可以用来创建新的 JavaFX 项目。但我认为它所做的只是创建一个示例 hello world 应用程序 - 在初始创建之后,该项目的工作方式与任何其他 Java 项目没有任何不同。
这就是它应该的样子,JavaFX 就是 Java。 Oracle 在其发行版中不区分 JavaFX 和 Java,在其项目类型中也不应区分 IDE。
我相信,在这种情况下,即使我错了,我也足够正确,即使我错了也没关系。
更新
所以我错了,这很重要:-)
使用Idea 13.1.4,如果我使用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创建一个新项目,有以下资源设置:
!?*.java;!?*.form;!?*.class;!?*.groovy;!?*.scala;!?*.flex;!?*.kt;!?*.clj
本质上,它复制了不是源文件的所有内容,一种文件黑名单集,而不是其他项目创建模板使用的文件白名单集。真的很奇怪...无论如何,资源集是用户可配置的,因此您可以根据需要对其进行修改,一旦这样做,您就不应该有任何问题(我相信,但我以前错了;-)
建议 - 结合 IDE 使用 3rd 方构建工具
基于 Gradle 或 Maven 等 3rd 方工具构建可能会更好。 Idea 与这些外部构建工具(和其他工具)配合得非常好。使用 3rd 方工具的优点是:
当然,使用 3rd 方构建工具的缺点是学习它们的复杂性(和许多怪癖),因为有时它们可能是相当的野兽。所以我认为这是一种权衡——小型的个人探索性项目不需要它们,大型项目或打算与他人共享的项目会从使用这些工具中受益。
【讨论】:
!?*.java;!?*.form;!?*.class;!?*.groovy;!?*.scala;!?*.flex;!?*.kt;!?*.clj;!?*.aj,即使它只是一个普通的 Java 项目。
一种解决方案是使用 Scene Builder 生成您的代码,然后将其集成到您现有的 IntelliJ 项目中。虽然应该可以将其作为模块导入,但您也可以简单地将代码移动到需要的位置(对包语句进行适当的更正等)。如果您发现项目中无法识别 javafx 导入,请尝试以下解决方案:
首先确保您已按照tutorial 中的初始步骤为 JavaFX 设置了 IntelliJ。注意:下面我提到 1.8,但这应该适用于 1.7+。我推荐 1.8+。
其次确保现有项目设置允许 javaFX 使用
第三确保为支持 JavaFX 的 JDK 配置模块
另外,请注意,如果您有一个 maven 项目,您可能需要将您的 fxml 放在一个特定的位置,“/main/resources/”。看看this.
这对我有用,希望对你有所帮助。
【讨论】:
我遵循了这些步骤
Controller.java,Main.java and sample.fxml复制到你的src目录下(A)项目的模块中,如A/user-interface/src
sample.fxml 中发现一个错误,因为它将控制器类引用为sample.Controller,仅将其更改为“控制器”。它以这种方式工作(因为我删除了 sample 包文件夹File | Project Structure | Modules
user-interface模块dependencies 选项卡+ 标记将旧的非 gui 模块添加为模块依赖项注意:你可以跳过添加模块依赖,让intellij为你做,只需在旧模块中输入一个类的名称,alt+enter(灯泡魔法)->add module depenency
【讨论】:
所以经过大量谷歌搜索后,我终于自己找到了!
如果您可以在 Intellijd 中创建新的 Javafx 项目并且它运行良好,但是当您打开一个恰好使用 javafx 的普通 java 应用程序时不起作用,(因为 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。
现在它终于建立起来了!
【讨论】: