【问题标题】:Gradle run with `--add-exports`Gradle 使用 `--add-exports` 运行
【发布时间】:2019-09-24 14:14:46
【问题描述】:

因为在 Java >9 中使用了 com.sun.* 类,我得到了 java.lang.IllegalAccessError。解决方法是添加--add-exports=javafx.base/com.sun.javafx.event=org.controlsfx.controls。我不确定如何将其添加到我的build.gradle,但我放了

run {
    jvmArgs = ['--add-exports=javafx.base/com.sun.javafx.event=org.controlsfx.controls']
}

进入它并没有帮助。 This 几乎是我遇到的问题。错误信息是:

java.lang.IllegalAccessError: class org.controlsfx.control.textfield.AutoCompletionBinding (in unnamed module @0x2d7444bc) cannot access class com.sun.javafx.event.EventHandlerManager (in module javafx.base) because module javafx.base does not export com.sun.javafx.event to unnamed module @0x2d7444bc
    at org.controlsfx.control.textfield.AutoCompletionBinding.<init>(AutoCompletionBinding.java:522) ~[controlsfx-11.0.0.jar:11.0.0]
    at impl.org.controlsfx.autocompletion.AutoCompletionTextFieldBinding.<init>(AutoCompletionTextFieldBinding.java:107) ~[controlsfx-11.0.0.jar:11.0.0]
    at org.controlsfx.control.textfield.TextFields.bindAutoCompletion(TextFields.java:151) ~[controlsfx-11.0.0.jar:11.0.0]
[…]
    at java.lang.Thread.run(Thread.java:835) [?:?]

【问题讨论】:

    标签: java javafx controlsfx


    【解决方案1】:

    您似乎没有模块化项目。有两种解决方法:

    • 制作模块化项目

    如果你添加一个模块信息描述符,比如:

    module hellofx {
        requires javafx.controls;
        requires org.controlsfx.controls;
    
        exports org.openjfx;
    }
    

    (当然,在那里添加您的模块),它将适用于:

    run {
        jvmArgs = ['--add-exports= \
                    javafx.base/com.sun.javafx.event=org.controlsfx.controls']
    }
    
    • 导出到所有模块

    由于您的项目不是模块化的,它是所谓的未命名模块的一部分。因此,你应该使用ALL-UNNAMED,所以包被导出到所有模块,包括ControlsFX:

    run {
        jvmArgs = ['--add-exports=javafx.base/com.sun.javafx.event=ALL-UNNAMED']
    }
    

    【讨论】:

    • 我遇到了与 java.net.http 不导出 jdk.internal.net.http.common 相同的错误。我添加了run { jvmArgs = ['--add-exports=java.net.http/jdk.internal.net.http=ALL-UNNAMED'] },但我仍然遇到同样的错误。我做错了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2021-03-04
    • 2018-07-03
    • 2017-10-18
    • 2023-02-17
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多