无法在IntelliJ Idea IDE中解析符号javafx.application


80

我试图在IntelliJ Idea IDE中创建JavaFX应用程序,但出现编译错误,提示:

java:软件包javafx.application不存在。

我已经将Project SDK和Project Language Level更改为Java 8,重新加载了项目,但没有帮助。然后,我检查了设置中是否启用了JavaFX插件。

在Google和StackOverflow上进行的搜索并没有给我更多有关出问题的想法。预先感谢您的任何帮助。

PS我在Archlinux OS上将IntelliJ Idea 14.0与java8.1.0_25一起使用。


您是针对jdk还是jre进行编译?确保其jdk。
Stav Saad 2014年

Answers:


96

如图所示这里,JavaFX是不再包含在OpenJDK的。

因此,请检查<Java SDK root>/jre/lib/ext/jfxrt.jar您的类路径下Project Structure -> SDKs -> 1.x -> Classpath是否存在?如果没有,那可能就是原因。尝试添加它,看看是否可以解决您的问题,例如在Ubuntu上,然后安装并安装openjfx软件包sudo apt-get install openjfx


我在Classpath和SDK根文件夹中没有此文件。我不知道为什么我从AUR安装的Java没有jfxrt.jar文件。
rob111 2014年

我的建议是去Oracle并为您的OS获得正确的发行版。
Ryan J

2
我已将jfxrt.jar文件添加到适当的目录并添加到SDK。现在我的IDE识别出javafx,但我得到了运行时异常图形设备初始化失败:es2,sw初始化QuantumRenderer时出错:找不到合适的管道java.lang.RuntimeException:初始化QuantumRenderer时出错:没有找到合适的管道我该怎么办到现在?
rob111 2014年

不幸的是,这听起来像是您遇到了系统配置问题...我不确定您可以如何解决此问题,因为我不知道您的特定Linux发行版是如何定制的。
Ryan J

24

这应该是您的理想解决方案。尝试并享受。如果某些命令无法正常运行,这意味着如果您遇到任何错误,请尝试自行解决。我给了你你需要的主要东西。如果您的应用程序位于其他位置,或者您的系统体系结构不同,请自行解决。这很容易做到。只需按照我给定的解决方案。

步骤0:

sudo apt-get install openjdk-8-jre

步骤1

sudo apt-get install openjfx

第2步:

sudo cp /usr/share/java/openjfx/jre/lib/ext/* /usr/lib/jvm/java-1.8.0-openjdk-amd64/lib

第三步:

sudo cp /usr/share/java/openjfx/lib/* /usr/lib/jvm/java-1.8.0-openjdk-amd64/lib

第四步:

sudo chmod 777 -R /usr/lib/jvm/java-1.8.0-openjdk-amd64

现在打开一个新项目或重建您的项目。祝好运。


1
OP正在使用不带APT的Arch Linux
xdevs23

4
sudo chmod 777 -R /usr/lib/jvm/java-1.8.0-openjdk-amd64是个坏主意!别做!
Karl Richter

卡尔·里希特。作为开发人员。出于开发目的,您可以执行此操作。授予777权限对企业和一般用户都是不利的。作为开发人员,它应该不会有任何问题。您对操作系统非常了解。>>另外,如果您愿意,可以通过进一步研究此问题来解决问题。谢谢。
Himel Rana

5
当您以允许rootkit和病毒自由重写文件的方式更改了系统许可时,了解操作系统是一个讽刺的声明。认为您知道什么都无所谓。切勿在系统文件上执行chmod 777。该文件夹的正确权限是644。ls -lha将显示一个简单的信息。
Routhinator'3

16

您可以使用IntelliJ随附的工具:<intellij>/jre64/lib/ext/jfxrt.jar


13

您需要从官方的Arch Linux存储库下载java-openjfx软件包。(此外,请确保您具有openjdk8-openjdk软件包)。之后,在Intellij中打开项目,然后转到Project-Structure-> SDKs-> 1.8-> Classpath,然后尝试删除已有的旧JDK,然后单击新JDK的目录,该目录现在将包含jfxrt.jar。


5
这准确地告诉了他要让Intellij查找当前找不到的软件包需要做什么。那怎么不回答他的问题呢?
patterkyle '16

2

您的项目语言级别可能低于JDK。

检查是否:“ Projeckt结构/项目/项目->语言级别”低于您的JDK。我在JDK 9上遇到了同样的问题,并且语言级别默认设置为6。

我将项目语言级别设置为9,之后一切正常。

您可能有相同的问题。


2

解决该问题的另一种方法:在左侧项目结构中的项目文件夹上单击鼠标左键,然后在操作列表中单击“打开模块设置”。在新窗口中,单击菜单下的SDK。标题为“平台设置”,然后检查“类路径”列表中是否可以找到jfxrt插件路径,如果找不到,请单击右侧的+符号并选择jfxrt插件的目录(C:\ Program Files \ Java \我的桌面上的jdk1.8.0 \ jre \ lib \ ext \ jfxrt.jar)


2

示例Java应用程序:

我在这里交叉回答另一个问题的答案,因为它是相关的,并且似乎也可以解决该问题。

这是我的带有OpenJDK 12,JavaFX 12和Gradle 5.4的示例项目

  • 打开标题为“ Hello World!”的JavaFX窗口。
  • 能够构建可运行的可运行分发zip文件(要测试的Windows)
  • 无需其他配置即可在IntelliJ中打开和运行
  • 能够从命令行运行

我希望有人觉得Github项目有用。

Scala案例说明:

此外,以下是适用于Gradle Scala插件的说明,但似乎不适用于Java。如果有人也使用Scala,Gradle和JavaFX,我将在此保留。

1)如问题中所述,需要设置JavaFX Gradle插件。 Open JavaFX对此有详细的文档

2)另外,您需要在平台的某个位置解压缩JavaFX SDK。注意:请确保向下滚动到JavaFX 12的“最新发行版”部分(由于某些原因,LTS 11优先出现在第一部分)。

3)然后,在IntelliJ中,转到File -> Project Structure -> Libraries,按➕按钮,然后lib从解压缩的JavaFX SDK中添加文件夹。

有关屏幕截图的详细说明,请查看IntelliJ优秀的Open JavaFX文档。我无法进行深层链接,因此请选择JavaFX and IntelliJ,然后Modular from IDE从文档导航中选择。然后向下滚动到步骤3. Create a library。如果遇到问题,也可以考虑检查其他步骤。

很难说这是否与原始问题完全相同,但是看起来足够相似,以至于我登陆了这里,因此我在这里补充自己的经验来帮助他人。


2

在IntelliJ Idea中,

检查以下内容是否配置正确,

步骤1:

文件->设置->插件->搜索javafx并确保已启用它。

步骤2:项目结构(Ctrl + Shift + Alt + s)

平台设置-> SDK-> 1.8->确保Classpath应该具有“ jre \ lib \ ext \ jfxrt.jar”

第三步:

项目设置->项目->项目SDK-应选择1.8

项目设置->项目->项目语言级别-配置为8

Ubuntu:如果在您的SDK中找不到jfxrt.jar,则安装sudo apt-get install openjfx


0

我遇到了同样的问题,就我而言,我通过以下方式解决了该问题

1)转到文件->项目结构---->全局库2)查找jdk1.8.0_241 \ lib中默认包含的jfxrt.jar(安装后)3)单击左上角的+添加新的全局库,我指定了jdk1.8.0_241 Ex的路径:(C:\ Program Files \ Java \ jdk1.8.0_241)。

我希望这能帮到您

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.