我已经完全按照教程进行了操作,但似乎无法正常工作。本教程位于以下JavaFX and Intellij Non-modular from IDE部分中:https : //openjfx.io/openjfx-docs/#install-java
这是尝试运行默认的Intellij Idea JavaFX项目时收到的错误消息:
"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=53491:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\jonat\IdeaProjects\Tawe-Lib FX\out\production\Tawe-Lib FX;C:\Program Files\Java\javafx-sdk-11.0.1\lib\src.zip;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx-swt.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.web.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.fxml.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.graphics.jar" sample.Main
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.base not found
Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)
正如我在侧边栏javafx.base下方看到的那样,这对我来说毫无意义lib:

通往jdk-11.0.1和的路径javafx-sdk-11.0.1:
C:\ Program Files \ Java …
在最新的Java 11版本中,JavaFX不再包含在JDK中。我有一个现有的JavaFX项目。我有兴趣学习如何将其从Java 10项目更改为Java11。我确定我已正确安装了Java 11,并且能够将默认的SDK从Java 10更改为Java 11。我知道如何使JavaFX与Java 11协同工作。
我已经在这里下载了最新的JavaFX版本。我已经将其提取到包含其他JDK的Java文件夹中,但是我现在真的不知道该怎么办。我读了一些冗长的指南,描述了如何使用Maven或Gradle连接项目,但是我从未使用过。有没有办法在IntelliJ菜单中添加JavaFX支持?
我使用maven和OpenJDK 1.8打包了JavaFX应用程序,其中的相关部分来自我的pom.xml:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>ui.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
现在重要的是,这曾经起作用。我知道这一点是因为我在包装最终起作用的地方专门进行了git commit。经过大约一天的时间,并进行了多次这样的构建(我不知道更改了什么),由于以下错误,我无法再启动jar:
$ java -jar target/app.jar
Error: Could not find or load main class ui.Main Caused by:
java.lang.NoClassDefFoundError: javafx/application/Application
Run Code Online (Sandbox Code Playgroud)
当我查看Jar的内容时,可以看到除JavaFX类之外,所有依赖项都被明确包含在内。
我尝试过的
javapackager以上都不成功。我能够启动我的应用程序的唯一方法是直接从IDE,这似乎意味着JavaFX的库的是仍然可用我的系统上。
关于如何再次运行它的任何想法?
我刚刚使用 openjdk 11 在 intelliJ 中创建了一个新的 JavaFX 项目,并在他们的网站上下载了最后一个 openjfx 库。
这是我所做的:
我已添加到运行/调试虚拟机选项:--module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml
虚拟机选项
我添加了一个新变量 env PATH_TO_FX :PATH_TO_FX=%programfiles%\Java\javafx-sdk-11\lib
所以它编译得很好,但在运行时失败:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found
Run Code Online (Sandbox Code Playgroud)
有谁知道我在这里缺少什么?
PS:我已经关注此链接https://openjfx.io/openjfx-docs/#install-javafx
编辑 :
我这里应该有 onpenjfx 库吗?类路径
我使用 Java11 创建一个简单的测试应用程序来学习 JPA、Hibernate、一些 java 模块化以及后来的内容(带有 dagger 的 CDI),当我使用 module-info.java 时,我遇到了编译问题
我为一些简单的类完成了一些DAO 存储库,这些类带有 JPA 注释以对其进行测试,并且在我的主类上一切都运行良好,我成功地插入和检索了一些对象。注意:到目前为止我还没有 module-info.java
现在我正在制作一些 FXML(使用 scenebuilder)。我之前已经这样做过,并且必须创建一个 module-info.java 来解决一些 JavaFX 问题(我认为与 java 反射有关):我在另一个项目中这样做了,并且按预期工作。这是由 IntelliJ 警告生成的,IntelliJ 警告要么通过 IntelliJ 解决它们,要么通过某些运行时异常通知我包 app.a 需要打开包 app.b,而我手动执行此操作。这是我第一次使用 module-info.java
因此,当我尝试通过另一个类MainFX与 gui 一起运行时,我收到一些错误(我将尝试解决该错误,但这不是这个问题的目的):
Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x71b9e075) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x71b9e075
at com.sun.javafx.fxml.FXMLLoaderHelper.<clinit>(FXMLLoaderHelper.java:38)
at javafx.fxml.FXMLLoader.<clinit>(FXMLLoader.java:2056)
at app.control.MainControl.loadFXML(MainControl.java:22) …Run Code Online (Sandbox Code Playgroud) 上下文:尝试使用OpenJdK11和OpenJFx11创建一个简单的JavaFx应用程序
问题:尝试执行时出现以下错误
Error: JavaFX runtime components are missing, and are required to run this application
Run Code Online (Sandbox Code Playgroud)
我提到了Link1和Link2。我还提到了“ JavaFx11入门”- 链接 正如我在尝试指定运行配置时在入门中所建议的那样,我收到一条消息,如下所示
run' in 'build' cannot be applied to '(groovy.lang.Closure)' less... (Ctrl+F1)
Run Code Online (Sandbox Code Playgroud)
希望面临的问题是明确的,并等待我出问题的地方。(使用IntelliJ ide)
码:
主-
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/Sample.fxml"));
StackPane stackPane = new StackPane(root);
Scene scene = new Scene(stackPane);
primaryStage.initStyle(StageStyle.TRANSPARENT);
primaryStage.setScene(scene);
primaryStage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
FXML-
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane xmlns="http://javafx.com/javafx" …Run Code Online (Sandbox Code Playgroud) 我在将 import“javafx.util.Pair”导入到我的程序中时遇到问题。在网上搜索后,我发现这个答案无法解析 IntelliJ Idea IDE 中的符号 javafx.application并且我已经安装了所需的 jar 文件,但仍然存在导入问题。这就是我打开java jdk时所面临的情况。我不知道为什么“jfxrt.jar”不同。 注意文件夹图标上的黑色箭头
我正在使用 IDEA(使用 OpenJDK 11),并且我正在尝试使用 SceneBuilder 来显示我的 FXML 文件。它有效,除非我使用继承的 JavaFX 组件,例如:
public class MyLabel extends Label {
public MyLabel(){
super();
setText("42");
}
}
Run Code Online (Sandbox Code Playgroud)
我总是收到一个错误:
java.lang.UnsupportedClassVersionError: sample/MyLabel has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
Run Code Online (Sandbox Code Playgroud)
所以我查看了我的 IDEA 安装文件夹(C:\Users\me\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\xxx.xxxx.xxx\plugins\javaFX\lib),我看到IDEA 使用的是 SceneBuilder 的 Java 8 版本(“SceneBuilderKit-8.2.0.jar”)。
我想知道如何在 IDEA 中使用Java 11 版本。我已经尝试在参数中填充 SceneBuilder 路径,但是没有用。
javafx ×8
java ×6
javafx-11 ×3
maven ×2
openjfx ×2
gluon ×1
gradle ×1
installation ×1
java-11 ×1
jpa ×1
modularity ×1
scenebuilder ×1