簡體   English   中英

Gradle OpenJFx11:錯誤 - 缺少JavaFx運行時組件

[英]Gradle OpenJFx11 : Error - JavaFx runtime components are missing

上下文 :嘗試使用OpenJdK11和OpenJFx11創建一個簡單的JavaFx應用程序

問題 :當我嘗試執行時,我收到如下錯誤

Error: JavaFX runtime components are missing, and are required to run this application

我提到了Link1Link2 我還提到了“JavaFx11入門” - 鏈接正如我在嘗試指定運行配置時的入門建議我得到一條消息,如圖所示

run' in 'build' cannot be applied to '(groovy.lang.Closure)' less... (Ctrl+F1) 

圖片

希望面臨的問題是明確的,等待我輸入錯誤的地方。 (使用IntelliJ ide)

碼:

主要 -

public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("/Sample.fxml"));
    StackPane stackPane = new StackPane(root);
    Scene scene = new Scene(stackPane);
    primaryStage.initStyle(StageStyle.TRANSPARENT);
    primaryStage.setScene(scene);
    primaryStage.show();

}
}

FXML-

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.AnchorPane?>
<AnchorPane xmlns="http://javafx.com/javafx"
            xmlns:fx="http://javafx.com/fxml"
            fx:controller="Controller"
            prefHeight="400.0" prefWidth="600.0">

</AnchorPane>

Gradle-

plugins {
id 'java'
}

group 'testJavaFx'
version '1.0-SNAPSHOT'

sourceCompatibility = JavaVersion.VERSION_11

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.openjfx:javafx-base:11:win'
    compile 'org.openjfx:javafx-controls:11:win'
    compile 'org.openjfx:javafx-fxml:11:win'
    compile 'org.openjfx:javafx-graphics:11:win'

    testCompile group: 'junit', name: 'junit', version: '4.12'
}

compileJava {
    doFirst {
        options.compilerArgs = [
                '--module-path', classpath.asPath,
                '--add-modules', 'javafx.controls'
        ]
    }
}

run {
    doFirst {
        jvmArgs = [
                '--module-path', classpath.asPath,
                '--add-modules', 'javafx.controls'
        ]
    }
}

我從JavaFX的官方存儲庫中找到了一個解決方案: https//github.com/javafxports/openjdk-jfx/issues/236

雖然有一些簡單的解決方法。 例如,您可以擁有一個不擴展javafx.application.Application的主類,然后該主類可以在您的真實主類上調用main(String [])方法(這樣,Java啟動器不需要javafx庫可用作命名模塊)。

我使用Intellij IDEA創建了一個java工件,它可以工作(不使用gradle)。

暫無
暫無

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

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