如何解决Javafx-在具有gradle错误的intelliJ上:包javafx.fxml不存在导入javafx.fxml.FXML
我不明白为什么我总是有同样的错误:
当我尝试在我的strcuture项目中添加库(fx java)时。
我的build.gradle:
plugins {
id 'java'
id 'application'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
application {
mainClassName = 'Launcher'
}
解决方法
以这种方式添加依赖关系是不好的。您正在使用gradle,让它完成工作。 一旦gradle被解决,所有依赖项将缓存在您的系统上。因此,您无需为每个项目添加带有文件夹(lib)的外部库。 gradle将从本地缓存为您解决该问题。因此,请删除该lib文件夹,并以此替换您的build.gradle文件内容
plugins {
id 'java'
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.9'
}
application {
//Note: Check package name. replace it with right one if it's wrong
mainClassName='home.Launcher'
}
javafx {
version='11.0.2'
modules=['javafx.controls','javafx.fxml']
}
repositories {
mavenCentral()
}
您还从awt而不是从javafx导入了软件包。取代那些 例如:java.awt.event.ActionEvent到javafx.event.ActionEvent
快乐编码:)
,没有足够的方法来完全回答这个问题,如果您遵循有关发布问题的规则(包括最重要的https://stackoverflow.com/help/minimal-reproducible-example
),将会发现您会更快地获得帮助。我们不知道您正在使用的Gradle或Javafx版本。
我猜您在类路径或项目库中没有JavaFX库...
将堆栈跟踪信息发布为代码,而不是图像链接,没有人希望单击链接。
但是从Stacktrace中,它找不到包javafx.fxml。
使用gradle时,我发现使用javafx插件最容易。使用插件时,mainClassName
属于javafx函数,如果您在javafx函数中阅读了我的评论,您将看到如何设置JAVAFX_HOME和PATH_TO_FX系统变量,显然需要编辑此gradle文件以使其匹配您的设置。
此外,mainClassName
是带有类名的完整软件包,因此我认为在您的情况下,它应该是org.example.Launcher
plugins {
id 'org.openjfx.javafxplugin' version '0.0.9'
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'application'
group 'org.example'
version '1.0-SNAPSHOT'
javafx {
version = "14.0.2.1"
/*******************************************************************************************************************
*
* Set an environment variable pointing to the location of the JavaFX SDK!
* JAVAFX_HOME is the sdk directory
* PATH_TO_FX is the sdk/lib directory
*
* ie: for Windows : Open an Administrator Command Prompt
* To Permanently set an environment variable for the current user:
* C:\> setx JAVAFX_HOME "C:\bin\Java\javafx-sdk-14.0.1"
* C:\> setx PATH_TO_FX "C:\bin\Java\javafx-sdk-14.0.1/lib"
*
* Or,alternatively to Permanently set global environment variable (for all users):
* C:\> setx /M JAVAFX_HOME "C:\bin\Java\javafx-sdk-14.0.1"
* C:\> setx /M PATH_TO_FX "C:\bin\Java\javafx-sdk-14.0.1/lib"
*
* ie: for MacOS : Open a Terminal
* If using bash:
* echo 'export JAVAFX_HOME=/Library/Java/JavaVirtualMachines/javafx-sdk-14.0.1' >> ~/.bash_profile
* echo 'export PATH_TO_FX=/Library/Java/JavaVirtualMachines/javafx-sdk-14.0.1/lib' >> ~/.bash_profile
*
* If using zsh:
* echo 'export JAVAFX_HOME=/Library/Java/JavaVirtualMachines/javafx-sdk-14.0.1' >> ~/.zshrc
* echo 'export PATH_TO_FX=/Library/Java/JavaVirtualMachines/javafx-sdk-14.0.1/lib' >> ~/.zshrc
*
*******************************************************************************************************************/
sdk = System.getenv('JAVAFX_HOME')
if (sdk == null || sdk.isBlank()) {
throw new InvalidUserDataException("JAVAFX_HOME environment variable is not set. It must be set to root folder where JAVAFX SDK is located")
}
modules = ['javafx.base','javafx.graphics','javafx.controls','javafx.fxml','javafx.web','javafx.swing']
mainClassName = 'org.example.Launcher'
}
application {
applicationDefaultJvmArgs = [
"--add-opens=javafx.graphics/com.sun.javafx.css=ALL-UNNAMED","--add-opens=javafx.graphics/com.sun.prism=ALL-UNNAMED","--add-opens=javafx.graphics/com.sun.prism.sw=ALL-UNNAMED"
]
}
repositories {
mavenCentral()
}
希望这会有所帮助,并为您指明正确的方向……如果您阅读JavaFX的文档,包括如何为IntelliJ和Gradle进行设置,那确实有帮助……所有信息都在那里,并且如果更多的人真正阅读了它,我们将不必继续回答这些问题!我们都看过了,这就是它的作用!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。