簡體   English   中英

Javafx - On intelliJ with gradle error: package javafx.fxml does not exist import javafx.fxml.FXML

[英]Javafx - On intelliJ with gradle error: package javafx.fxml does not exist import javafx.fxml.FXML

我不明白為什么我總是有同樣的錯誤:

圖片

當我嘗試在我的結構項目中添加庫(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

快樂編碼:)

go 不足以完全回答這個問題,如果您遵守發布問題的規則,您會發現您會更快地獲得幫助,包括最重要的問題,成為https://stackoverflow.com/help/minimal-reproducible -例子

我們不知道您使用的是什么版本的 gradle 或 javafx。

我猜你在類路徑或項目庫中沒有 JavaFX 庫......

將堆棧跟蹤作為代碼發布,而不是圖像鏈接,沒有人願意點擊鏈接。

但是從 Stacktrace 中找不到 package javafx.fxml。

我發現使用 gradle 時使用 javafx 插件最容易。 When using the plugin, mainClassName goes in the javafx function, if you read my coments within the javafx function, you will see how to set the JAVAFX_HOME and PATH_TO_FX system variables, you will need to edit this gradle file obviously to match your setup.

此外, mainClassName是完整的 package 與 class 名稱,所以我假設在你的情況下它應該是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 設置它,這真的很有幫助...所有信息都在那里,如果更多人實際閱讀它,我們不必一直回答這些問題,我們都閱讀了它,這就是它的用途!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM