首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java11中将JavaFX运行时添加到Eclipse中?

如何在Java11中将JavaFX运行时添加到Eclipse中?
EN

Stack Overflow用户
提问于 2018-09-03 07:23:22
回答 6查看 124.1K关注 0票数 36

当Java 11将JavaFX排除为最新版本的一部分时,我将收到以下错误。

错误:缺少JavaFX运行时组件,需要运行此应用程序

那么,如何在Java11中将JavaFX添加到Eclipse中呢?谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-09-03 22:15:08

遵循入门指南,以下是从JavaFX运行JavaFX 11所需的步骤。

  1. 这里安装Eclipse2018-09。
  2. 这里安装JDK 11。
  3. 将Java 11作为已安装的JRE添加到Eclipse: Eclipse ->窗口、->首选项、->、Java ->已安装的JRE、->添加。
  4. 从JavaFX 11 ea下载这里
  5. 创建一个用户库: Eclipse ->窗口、->首选项、-> Java ->构建路径、->用户库->新建。将其命名为JavaFX11,并将jars包含在JavaFX 11-ea的lib文件夹下。
  6. 创建一个Java项目。您不需要添加模块路径类。确保选择了Java11并将JavaFX11库添加到项目的模块路径中。
  7. 添加包javafx11和主应用程序类HelloFX
代码语言:javascript
复制
    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类,因为我们已经包含了用户库。

  1. 添加运行时参数。编辑项目的运行配置,并添加以下VM参数: -模块-路径C:\用户\下载\javafx-sdk-11\lib-add-模块=javafx.Controls
  2. 最后,运行该项目。它应该能正常工作。
票数 59
EN

Stack Overflow用户

发布于 2019-03-22 13:17:51

我想分享一下我关于发布javafx 11应用程序的发现。我说的是一个现有的遗留javafx应用程序,最初开发时没有模块(例如w/ Java 8)。

最有趣的方法是下面的方法#2b,它要求最小的更改,,即它不需要参数。我说过我用的是maven,所以。前面的答案第一步是在pom.xml中向javafx添加一个依赖项。例如:

代码语言:javascript
复制
<dependency>
  <groupId>org.openjfx</groupId>
  <artifactId>javafx-controls</artifactId>
  <version>11.0.2</version>
</dependency>

为了启动,我找到了几种选择:

1a)使用命令行中的maven启动

pom.xml中配置如下节:

代码语言:javascript
复制
    <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参数

代码语言:javascript
复制
--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()函数创建一个新的类,例如:

代码语言:javascript
复制
Application.launch(MyApplication.class);

备注

在我的例子中(即在Windows上,系统中有一个默认的JDK 8),关于启动javafx存在一个已知的问题。解决方案是添加以下VM arg:-Djava.library.path=C:。因此,实际上,对于上面描述的所有4种方法,我需要添加以下内容。

票数 14
EN

Stack Overflow用户

发布于 2019-04-15 14:39:24

关于FXMLLoader我有问题..。它找不到那班学生。

我通过更改上面显示的参数来解决这个问题,以加载所有的模块,而不仅仅是javafx.controls

代码语言:javascript
复制
--module-path <path to the javafx sdk> --add-modules=ALL-MODULE-PATH
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52144931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档