亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Maven JavaFx 項目編譯但從控制臺運行給出“缺少 JavaFX 應用程序類”錯誤消息

Maven JavaFx 項目編譯但從控制臺運行給出“缺少 JavaFX 應用程序類”錯誤消息

一只甜甜圈 2022-07-06 19:05:02
我正在將我的 Maven JavaFX 應用程序從 Java 8 遷移到 Java 11。我已將我的 pom.xml 中的插件更新為最新的(符合 Java 11 的)插件。編譯運行良好,在“目標”文件夾下的正確目錄中為我提供了 jar 和所有依賴項和模塊,但是當我嘗試運行我的 jar 文件時,我得到了可怕的“缺少 JavaFX 應用程序類”錯誤。無論我如何嘗試更改插件配置 - 我總是收到此錯誤消息并且應用程序將無法運行。現在,更多的發現: 1. 主類確實駐留在類和 jar 下的正確文件夾中。2. Manifest 文件在正確的位置并包含主類屬性(在 Java 8 下運行良好)。這是相關部分<plugin>        <artifactId>maven-compiler-plugin</artifactId>        <version>3.8.0</version>        <configuration>            <source>11</source>            <release>11</release>            <showWarnings>true</showWarnings>            <showDeprecation>true</showDeprecation>            <compilerVersion>11</compilerVersion>        </configuration>        <dependencies>            <dependency>                <groupId>org.ow2.asm</groupId>                <artifactId>asm</artifactId>                <version>7.0</version>            </dependency>        </dependencies></plugin><plugin>        <artifactId>maven-jar-plugin</artifactId>        <configuration>            <archive>                <manifest>                   <addClasspath>false</addClasspath>                   <mainClass>${mainClass}</mainClass>                </manifest>                <manifestEntries>                   <JavaFX-Application-Class>${mainClass}</JavaFX-Application-Class>                </manifestEntries>             </archive>             <outputDirectory>${project.build.directory}/libs</outputDirectory>        </configuration></plugin>我通過包含文檔中描述的 JavaFX 模塊來運行 jar:java -verbose --module-path ../mods \    --add-modules javafx.controls,javafx.graphics,javafx.fxml,javafx.swing \     -jar jar-file-name.jar \     package.class.MainClass在我的挫折中,我嘗試了無數的配置,包括使用 JavaFx Java 11 示例中的配置。沒有任何效果。有任何想法嗎?
查看完整描述

1 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

我在https://github.com/javafxports/openjdk-jfx/issues/236找到了一種解決方法。


此解決方法包括創建一個新的常規(非 Java Fx)類,該類將成為 Jar 的主類,并且該類將啟動基于 JavaFx 的原始應用程序類。


這是我找到解決方法的鏈接中的新類:


public class Main {


    public static void main(String[] args) {

        HelloFX.main(args);

    }

}

希望這可以幫助某人。我沒有將此答案標記為正確答案,因為它是一種解決方法而不是真正的解決方案。


編輯:事實證明,這里的 JavaFX 文檔中描述的解決方法:https ://openjfx.io/openjfx-docs/#modular


正如這里所解釋的,為了創建一個包含所有必需的 JavaFX 依賴項的可運行 jar,您將需要使用一個不從 Application.js 擴展的啟動器類。


查看完整回答
反對 回復 2022-07-06
  • 1 回答
  • 0 關注
  • 428 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號