如何将intellij中的普通java项目转换为JavaFx项目

cotxawn7  于 2023-04-10  发布在  Java
关注(0)|答案(5)|浏览(134)

我目前使用的是一个普通的Java项目(gradle项目),我想将其转换为一个JavaFX项目,而无需将现有源代码重新导入到一个新的Javafx项目中。

v09wglhw

v09wglhw1#

没有要转换的内容。
我不相信一个“普通”Java项目和一个JavaFX项目在Idea上有什么区别。
当然,在Idea12.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使用第三方构建工具

您最好使用第三方工具(如Gradle或Maven)进行构建。*Idea与这些外部构建工具(和其他工具)配合使用效果非常好 *。使用第三方工具的优点是:
1.使用这些工具的项目遵循一个约定,即资源被放置在特定的资源文件夹中,该文件夹中的所有内容都被视为要打包到构建输出中的资源。因此,这里的混乱较少。
1.由此产生的项目更可移植,更容易被其他可能不使用Idea的开发人员使用。
1.这些项目可以通过Jenkins等持续集成构建系统轻松构建。

  1. Gradle和Maven都有JavaFX特定的插件,为打包JavaFX应用程序提供额外的支持。
    当然,使用第三方构建工具的缺点是学习它们的复杂性(和许多怪癖),因为有时它们可能是相当野兽。所以我认为这是一个权衡-小的,个人探索性的项目不需要它们,较大的项目或您打算与他人分享的项目可以从使用这些工具中受益。
mi7gmzs6

mi7gmzs62#

一种解决方案是使用Scene Builder生成代码,然后将其集成到现有的IntelliJ项目中。虽然可以将其作为模块导入,但您也可以简单地将代码移动到需要的位置(对package语句进行适当的更正等)。如果您注意到javafx导入在您的项目中无法识别,请尝试以下解决方案:
首先确保您已经按照tutorial中的初始步骤为JavaFX设置了IntelliJ。注意:下面我提到1.8,但这应该与1.7+工作。我推荐1.8+。
其次,确保现有项目设置允许使用javaFX
1.打开项目结构
1.单击项目设置窗格下的项目
1.确保Project SDK为1.8+。
第三,确保为支持JavaFX的JDK配置模块
1.打开项目结构
1.单击项目设置窗格下的模块
1.确保所使用的模块SDK支持javaFX,我再次使用JDK 1.8,但它应该与1.7一起工作。
另外,请注意,如果您有一个maven项目,您可能需要将fxml放在一个特定的位置,“/main/resources/"。
这对我很有效,我希望它能帮助你。

wribegjk

wribegjk3#

我遵循了那些步骤

  • 在现有intellij项目中创建新模块(A)
  • 在别处创建新的JavaFx项目
  • 将JavaFx项目(即Controller.java,Main.java and sample.fxml)中的代码复制到src目录下的(A)项目中的模块中,如A/user-interface/src中所示

  • 你会在sample.fxml中发现一个错误,因为它引用控制器类为sample.Controller,将其更改为'Controller' only。

  • 在(A)中打开设置菜单File | Project Structure | Modules
  • 从设置窗口左侧的列表中选择user-interface模块
  • 切换到dependencies选项卡
  • 使用右侧的绿色+标记将旧的非GUI模块添加为模块依赖项
  • 现在你可以使用非gui模块中的类了,享受吧!

注意:你可以跳过添加模块的依赖项,让intellij为你做,只需要在旧模块中输入一个类的名称,alt+enter(灯泡魔术)-〉add module depenency

p5fdfcr1

p5fdfcr14#

所以经过大量的谷歌搜索,我终于发现了自己!
如果你可以在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

现在它终于建成了!

wljmcqd8

wljmcqd85#

请记住,您的源文件夹必须正确设置。请参阅屏幕截图以了解我的意思。

相关问题