当Java 11将JavaFX排除为最新版本的一部分时,我将收到以下错误。
错误:缺少JavaFX运行时组件,需要运行此应用程序
那么,如何在Java11中将JavaFX添加到Eclipse中呢?谢谢。
发布于 2018-09-03 22:15:08
遵循入门指南,以下是从JavaFX运行JavaFX 11所需的步骤。
javafx11和主应用程序类HelloFX package javafx11;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloFX extends Application {
@Override
public void start(Stage stage) {
String version = System.getProperty("java.version");
Label l = new Label ("Hello, JavaFX 11, running on "+version);
Scene scene = new Scene (new StackPane(l), 300, 200);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}注意,编辑器不应该抱怨JavaFX类,因为我们已经包含了用户库。
发布于 2019-03-22 13:17:51
我想分享一下我关于发布javafx 11应用程序的发现。我说的是一个现有的遗留javafx应用程序,最初开发时没有模块(例如w/ Java 8)。
最有趣的方法是下面的方法#2b,它要求最小的更改,,即它不需要参数。我说过我用的是maven,所以。前面的答案第一步是在pom.xml中向javafx添加一个依赖项。例如:
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11.0.2</version>
</dependency>为了启动,我找到了几种选择:
1a)使用命令行中的maven启动
在pom.xml中配置如下节:
<build>
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>org.openjfx.hellofx.MainApp</mainClass>
</configuration>
</plugin>
</plugins>
</build>在此之后,您可以从控制台窗口运行mvn exec:java,这将启动应用程序。Maven将负责将类路径中的所有条目添加到模块路径中。我提醒CTRL + ALT + T中的快捷方式,它直接在IDE中打开终端窗口。
1b)使用maven启动,但作为Eclipse启动配置
右键单击项目> Run > Maven Build.。然后在exec:java目标文本框中输入。与前面的方法相比,优势:更多地集成到Eclipse中。和简单的调试。您只需要在Debug模式下重新启动启动配置就可以了。请允许我提醒您,Eclipse可以直接存储在项目dir (repo)中的.launch文件中,因此可以由同事共享/重用。使用最后一个选项卡,公共,在编辑配置窗口中。
2a)使用Eclipse启动并使用变量指定-module-path
右键单击主类> Run >JavaApplication。当您第一次单击一个新的启动配置时,它可能无法工作,所以您需要编辑它(例如**Run按钮(w/ Play图标),在工具栏> Run configurations >选择与您的类对应的配置。或者点击Play后在上面的CTRL + click )。
然后将其添加到参数> VM参数中
--module-path ${project_classpath:REPLACE_ME_WITH_YOUR_PROJECT_NAME} --add-modules javafx.controls,javafx.fxml所以这里的诀窍是使用${project_classpath}变量。否则,您应该需要精确地编写通向javafx的路径,这是.m2回购中的某个地方。这样做会使启动配置不容易被同事重用。
2b)在没有指定-module-path的情况下使用Eclipse启动
这是我错误地发现的,在使用了大约5小时的Java 11 &模块“乐趣”之后,我发现的是la piece de résistence。您的应用程序可以开箱即用,无需接触-module-path。当然,javafx库仍然需要在类路径中(但这是由mvn处理的)。技巧是(参f)。这),您的主应用程序不应该扩展Application (例如下面的MyApplication )。如果这是您的情况,那么使用一个main()函数创建一个新的类,例如:
Application.launch(MyApplication.class);备注
在我的例子中(即在Windows上,系统中有一个默认的JDK 8),关于启动javafx存在一个已知的问题。解决方案是添加以下VM arg:-Djava.library.path=C:。因此,实际上,对于上面描述的所有4种方法,我需要添加以下内容。
发布于 2019-04-15 14:39:24
关于FXMLLoader我有问题..。它找不到那班学生。
我通过更改上面显示的参数来解决这个问题,以加载所有的模块,而不仅仅是javafx.controls
--module-path <path to the javafx sdk> --add-modules=ALL-MODULE-PATHhttps://stackoverflow.com/questions/52144931
复制相似问题