任务 'run' 原因:org.joor.ReflectException:java.lang.NoSuchFieldException:javaExecHandleBuilder - Gluon 移动项目
Task 'run' causes: org.joor.ReflectException: java.lang.NoSuchFieldException: javaExecHandleBuilder - Gluon Mobile Project
当我尝试 运行 我在 NetBeans 中的整个项目时,我收到以下错误日志:
...
Task :run FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':run'.
> org.joor.ReflectException: java.lang.NoSuchFieldException: javaExecHandleBuilder
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 4s
我不知道怎么回事,我在build.gradle中指定了主要class...请帮忙!
我找到了使用 Gradle 6.6 或更高版本开发 JavaFX 项目的解决方案。您需要删除 javafx-gradle-plugin 并使用 Gradle 本身的 JPMS 支持。删除 javafx-gradle-plugin 后,您需要自己维护 JavaFX 依赖项。这是 build.gradle
设置的示例。
plugins {
id 'application'
}
def currentOS = org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem;
def platform
if (currentOS.isWindows()) {
platform = 'win'
} else if (currentOS.isLinux()) {
platform = 'linux'
} else if (currentOS.isMacOsX()) {
platform = 'mac'
}
java {
modularity.inferModulePath = true
}
dependencies {
implementation "org.openjfx:javafx-base:15.0.1:${platform}"
implementation "org.openjfx:javafx-controls:15.0.1:${platform}"
implementation "org.openjfx:javafx-graphics:15.0.1:${platform}"
implementation "org.openjfx:javafx-fxml:15.0.1:${platform}"
}
application {
mainModule = 'com.your.module'
mainClass = 'com.your.package.Main'
}
在您的 module-info.java
文件中,您需要声明需要 JavaFX 模块。
module com.your.module {
requires javafx.base;
requires javafx.controls;
requires javafx.graphics;
requires javafx.fxml;
opens com.your.package to javafx.fxml;
exports com.your.package;
}
现在存在一个删除模块化插件的 JavaFX Gradle 插件的分支。
所述插件的开发人员建议仅在您使用 Java 16 and/or Gradle 7.
时使用它
构建脚本:
plugins {
id 'application'
id 'com.dua3.javafxgradle7plugin' version '0.0.9'
}
application {
mainModule = 'module.name'
mainClass = 'class.name'
}
javafx {
version = '16'
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
您的模块描述符不需要更改。
插件信息:
当我尝试 运行 我在 NetBeans 中的整个项目时,我收到以下错误日志:
...
Task :run FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':run'.
> org.joor.ReflectException: java.lang.NoSuchFieldException: javaExecHandleBuilder
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 4s
我不知道怎么回事,我在build.gradle中指定了主要class...请帮忙!
我找到了使用 Gradle 6.6 或更高版本开发 JavaFX 项目的解决方案。您需要删除 javafx-gradle-plugin 并使用 Gradle 本身的 JPMS 支持。删除 javafx-gradle-plugin 后,您需要自己维护 JavaFX 依赖项。这是 build.gradle
设置的示例。
plugins {
id 'application'
}
def currentOS = org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem;
def platform
if (currentOS.isWindows()) {
platform = 'win'
} else if (currentOS.isLinux()) {
platform = 'linux'
} else if (currentOS.isMacOsX()) {
platform = 'mac'
}
java {
modularity.inferModulePath = true
}
dependencies {
implementation "org.openjfx:javafx-base:15.0.1:${platform}"
implementation "org.openjfx:javafx-controls:15.0.1:${platform}"
implementation "org.openjfx:javafx-graphics:15.0.1:${platform}"
implementation "org.openjfx:javafx-fxml:15.0.1:${platform}"
}
application {
mainModule = 'com.your.module'
mainClass = 'com.your.package.Main'
}
在您的 module-info.java
文件中,您需要声明需要 JavaFX 模块。
module com.your.module {
requires javafx.base;
requires javafx.controls;
requires javafx.graphics;
requires javafx.fxml;
opens com.your.package to javafx.fxml;
exports com.your.package;
}
现在存在一个删除模块化插件的 JavaFX Gradle 插件的分支。 所述插件的开发人员建议仅在您使用 Java 16 and/or Gradle 7.
时使用它构建脚本:
plugins {
id 'application'
id 'com.dua3.javafxgradle7plugin' version '0.0.9'
}
application {
mainModule = 'module.name'
mainClass = 'class.name'
}
javafx {
version = '16'
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
您的模块描述符不需要更改。
插件信息: