gradle - 如何将 --add-exports 添加到 gradle 应用程序?

标签 gradle javafx gradle-kotlin-dsl java-module

我正在开发一个使用 java 模块系统的 Java 11 应用程序。我需要使用反射来访问 JavaFX 库的内部函数。包含该函数的 java 模块不会导出它,因此在运行 gradle 构建任务时出现以下错误:

import com.sun.javafx.tk.TKStage;
                     ^
  (package com.sun.javafx.tk is declared in module javafx.graphics, which does not export it to module com.sampleapp)

我认为这意味着我需要执行 --add-exports javafx.graphics/com.sun.javafx.tk=com.sampleapp,但是,我不确定如何执行此操作在 Gradle 里。我试过将它添加到 applicationDefaultJvmArgs,但没有成功。

application {
    ...

    applicationDefaultJvmArgs = listOf(
        "--add-exports javafx.graphics/com.sun.javafx.tk=com.sampleapp"
    )
}

我也试过将它添加到 gradle.properties.kts 但没有成功。

org.gradle.jvmargs = listOf(
    "--add-exports javafx.graphics/com.sun.javafx.tk=com.sampleapp"
)

最佳答案

我能够通过添加来解决问题:

tasks.withType<JavaCompile> {
    options.compilerArgs.addAll(arrayOf(
        "--add-exports", "javafx.graphics/com.sun.javafx.tk=com.sampleapp"
    ))
}

关于gradle - 如何将 --add-exports 添加到 gradle 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68687611/

相关文章:

java - 如何在gradle java自定义插件中添加源集

gradle - 使用Gradle在JAR中包含生成的代码

java - 如何通过其图形拖动选项卡?

gradle - 使用 Gradle 构建带有 Kotlin-DSL 依赖项的 jar

kotlin - 如何使用 Gradle Kotlin 脚本创建胖 JAR?

java - android studio gradle问题:找不到com.android.tools.build:gradle:3.5.0

android - 如何防止 Gradle/Android Studio 覆盖 CMake 提供的 C++ 编译器设置?

文本字段的 javafx 场景生成器 Action 处理程序

css - JAVAFX - 使用 CSS 的按钮上的透明栏

gradle - 如何在具有 android、iOS 和不受支持的目标(如 mingwX64)的 kotlin 多平台项目中设置 sqldelight?