java - Java 11 中的 JFoenix

标签 java maven intellij-idea javafx jfoenix

这是我的 pom.xml 文件,用于在我的项目中使用 javafx 11 和 JFoenix 9。 但是当我使用 Maven 编译并运行 javafx 时,它会出现此错误:

Caused by: java.lang.IllegalAccessError: class com.jfoenix.skins.JFXGenericPickerSkin (in module com.jfoenix) cannot access class com.sun.javafx.binding.ExpressionHelper (in module javafx.base) because module javafx.base does not export com.sun.javafx.binding to module com.jfoenix

我已将此命令添加到编译选项中:

--add-exports javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix
--add-exports javafx.controls/com.sun.javafx.scene.control=com.jfoenix
--add-exports javafx.base/com.sun.javafx.binding=com.jfoenix
--add-exports javafx.graphics/com.sun.javafx.stage=com.jfoenix
--add-exports javafx.base/com.sun.javafx.event=com.jfoenix

仍然没有任何改变。有人可以帮我解决吗?我正在使用 Intellij IDEA 和 Java 11.0.3。

我的 module-info.java 文件:

module com {
requires javafx.controls;
requires javafx.fxml;
requires javafx.base;
requires javafx.graphics;
requires com.jfoenix;

opens com.Client.Controller to javafx.fxml;
exports com;
}

我的 pom.xml 文件:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>11.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-base</artifactId>
        <version>11.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>11.0.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.jfoenix</groupId>
        <artifactId>jfoenix</artifactId>
        <version>9.0.9</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <release>11</release>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>0.0.1</version>
            <configuration>
                <mainClass>com.App</mainClass>
                <options>
                    <option>--add-opens</option>
                    <option>javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix</option>
                    <option>--add-opens</option>
                    <option>javafx.controls/com.sun.javafx.scene.control=com.jfoenix</option>
                </options>
            </configuration>
        </plugin>
    </plugins>
</build>

最佳答案

将编译选项添加到 pom.xml 文件中,如下所示:

<plugin>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>0.0.1</version>
    <configuration>
        <options>
        <option>--add-opens</option>
        <option>javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix</option>
        <option>--add-opens</option>
        <option>javafx.controls/com.sun.javafx.scene.control=com.jfoenix</option>
        <option>--add-exports</option>
        <option>javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix</option>
        <option>--add-exports</option>
        <option>javafx.controls/com.sun.javafx.scene.control=com.jfoenix</option>
        <option>--add-exports</option>
        <option>javafx.base/com.sun.javafx.binding=com.jfoenix</option>
        <option>--add-exports</option>
        <option>javafx.graphics/com.sun.javafx.stage=com.jfoenix</option>
        <option>--add-exports</option>
        <option>javafx.base/com.sun.javafx.event=com.jfoenix</option>
        </options>
        <mainClass>com.App</mainClass>
    </configuration>
</plugin>

关于java - Java 11 中的 JFoenix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56800045/

相关文章:

java - Spring Batch SplitBuilder 不执行启动流程

java - 从 jar 执行主类

java - 摩尔斯电码解码 - 1 个字

Maven pmd 插件 - 排除/禁用规则

java - 在 intellij 的 GWT 配置中更改 Super Dev Mode 端口参数

java - 无法将 intellij 的 scenebuilder 与 jfoenix 一起使用

java - 为什么我已经导入了 java.util.* 而还必须导入 java.util.List?

java - Hibernate、MySQL 和 Maven : am I losing my configuration?

intellij-idea - IntelliJ 15 在优化的同时重新排序导入

java - 我们可以使用 DateTimeFormatter 的 Maven 依赖项