相关疑难解决方法(0)

IntelliJ无法使用OpenJDK 11识别JavaFX 11

我无法让IntellJ识别JavaFX包.使用OpenJDK 11的新JavaFX项目,在尝试构建项目时,IntelliJ无法识别JavaFX包.

我是openjfx:javafx-base-11从Maven回购中导入的.

我已经查看了其他问题,解决方案似乎包括检查字节码是否处于正确的级别(我的是),以及项目语言是否正确(我的是).

有人有主意吗?

pic 1

pic 2

pic 3

编辑:

错误:

在此输入图像描述

java javafx intellij-idea java-11 javafx-11

53
推荐指数
4
解决办法
5万
查看次数

无法访问类 com.sun.javafx.util.Utils(在模块 javafx.graphics 中)-JavaFX 和 Eclipse

我已按照本指南将 JavaFX 设置到 Linux 机器上。首先我已经安装了 Java 11

asus@asus-pc:/usr/share/openjfx/lib$ java -version
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-Ubuntu-1ubuntu219.04.1)
OpenJDK 64-Bit Server VM (build 11.0.3+7-Ubuntu-1ubuntu219.04.1, mixed
mode, sharing)
asus@asus-pc:/usr/share/openjfx/lib$ 
Run Code Online (Sandbox Code Playgroud)

然后我从命令安装了 OpenJFX sudo apt-get install openjfx

 asus@asus-pc:/usr/share/openjfx/lib$ ls
 javafx.base.jar      javafx.graphics.jar  javafx.swing.jar
 javafx.controls.jar  javafx.media.jar     javafx.web.jar
 javafx.fxml.jar      javafx.properties    src.zip
 asus@asus-pc:/usr/share/openjfx/lib$ 
Run Code Online (Sandbox Code Playgroud)

然后在 Eclipse 中创建了一个库。

在此处输入图片说明

然后我将它包含到我的 java 项目中。我尝试运行此代码:

package se.danielmartensson.start;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application{

    /*
     * Start the start(Stage front)
     */
    public …
Run Code Online (Sandbox Code Playgroud)

java javafx scenebuilder gluon-desktop

16
推荐指数
4
解决办法
2万
查看次数

错误:缺少 JavaFX 运行时组件 - JavaFX 11 和 OpenJDK 11 以及 Eclipse IDE

我有一个经典问题:将 JavaFX 11 与 OpenJDK 11 与 Eclipse IDE 一起使用。

Error: JavaFX runtime components are missing, and are required to run this application
Run Code Online (Sandbox Code Playgroud)

我有 OpenJDK 11.0.2

dell@dell-pc:~$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
dell@dell-pc:~$ 
Run Code Online (Sandbox Code Playgroud)

我也有JavaFX 11 SDK。顺便一提!如果您想知道,我正在使用 Lubuntu Linux 18.10。 在此处输入图片说明

然后我.jarJavaFX 11 SDKEclipse IDE 中的文件包含到一个库包中。

在此处输入图片说明

然后我将这个库包包含到我的JAdaptiveMPC项目中。 在此处输入图片说明

我的代码语法没有错误,但仍然无法编译我的项目。 在此处输入图片说明

你知道为什么吗?如果我.jar从 Maven导入所有这些文件而不是下载JavaFX SDK并将其导入到库中,我会遇到同样的错误。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" …
Run Code Online (Sandbox Code Playgroud)

java eclipse javafx gluon-desktop javafx-11

12
推荐指数
1
解决办法
3万
查看次数

找不到javafx.controls JavaFX 11 / JDK 11.0.1

我正在使用InteliJ,已经研究了似乎对其他所有人都适用的所有其他解决方案。我收到一个错误:

Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x5782d366) 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 @0x5782d366
Run Code Online (Sandbox Code Playgroud)

然后,将以下内容添加到运行配置中的VM选项:

--module-path="C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib" \ 
    --add-modules=javafx.controls \
    --add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.reflect=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.beans=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.glass.utils=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED
Run Code Online (Sandbox Code Playgroud)

那似乎可以部分解决问题?但是,当我尝试运行此代码时,我没有得到完整的堆栈错误痕迹,我得到了以下三行:

"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" \
    --module-path=C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib \
    --add-modules=javafx.controls,javafx.fxml \
    --add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.reflect=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.beans=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.glass.utils=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED \
    --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 Community Edition 2018.3\lib\idea_rt.jar=60572:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.3\bin" …
Run Code Online (Sandbox Code Playgroud)

java sdk javafx openjfx javafx-11

6
推荐指数
1
解决办法
4634
查看次数

了解主类如何影响JPMS

我有一个非常基本的JavaFX应用程序,如果Application类不是 Main类,它可以完美地工作:

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;

public class Main {

    public static void main(String[] args) {
        Application.launch(App.class, args);
    }

}

public class App extends Application {

    @Override
    public void start(Stage primaryStage) {
        FXMLLoader loader = new FXMLLoader(); // works
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,当我将两者合并在一起时(这是大多数教程中推荐的方式,包括OpenJFX的官方文档),模块系统抛出IllegalAccessError(至少在OpenJDK 11.0.2上):

public class MainApp extends Application {

    @Override
    public void start(Stage primaryStage) {
        FXMLLoader loader = new FXMLLoader(); // throws IllegalAccessError
    }

    public static void main(String[] args) {
        launch(MainApp.class, args);
    } …
Run Code Online (Sandbox Code Playgroud)

java javafx java-platform-module-system java-11 javafx-11

6
推荐指数
1
解决办法
103
查看次数

@FXML注释和FXMLLoader类未解析为Java 11和JavaFX 11中的类型

之前我的项目曾经是Java 8,但现在我使用Java 11和JavaFX 11,现在JavaFX已经从Java 11开始与Java分离了.我没有下载JavaFX SDK但是在pom.xml中添加了以下依赖项以获取必需的模块和jar文件,它们在早期版本中曾经是Java本身的一部分.

       <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

但是我can not be resolved to a type@FXML注释和FXMLLoader类上遇到了编译错误.

我是否需要添加一些其他/额外的依赖项来解决此问题?

java javafx openjfx javafx-11

1
推荐指数
1
解决办法
4542
查看次数