簡體   English   中英

如何分發java程序?

[英]How to distribute java programs?

一個多月前,我開始使用 Java + JavaFx 開發應用程序。

我能夠制作一些漂亮的動畫應用程序。 編譯成 jar 文件時,我遇到了以下問題:

  • Java17 沒有運行普通人的 jre, https: //www.java.com/en/download/ ,這引出了第一個問題,為什么我不能在較新版本的 java jdk 上開發而不痛苦,為什么我應該降到第 8 版並失去很多功能嗎

  • 此外,如果沒有任何控制台消息(javafx 未命名.... @729347c),我的 javafx jar 根本不想運行,並且不會在雙擊時運行。 還有諸如 favafx 無運行時之類的消息等等等等。 我通過安裝 liberica jdk https://bell-sw.com/pages/downloads/#/java-17-lts解決了這個問題。 現在我可以成功編譯jar文件並通過雙擊運行它們

  • 我在那里讀到,在一堆主題中,Oracle 現在意味着我必須向客戶提供所需版本的 jre (Jre17),問題是我該如何做到這一點。 較新版本的 Lauch4j 刪除了將 jar 與 jre 一起打包的功能。 但我也不喜歡 Lauch4j。

  • 后來了解到GraalVm中的native-image這種東西。 我嘗試用 javafx 編譯一個 jar 文件,但它對我沒有任何作用。 程序剛剛崩潰。 我在 BellSoft 網站上找到了我需要的包https://bell-sw.com/pages/downloads/native-image-kit/#/nik-22-17 ,其中配置了 graalvm。 心想這些大神又解決了我所有的問題,我就把我的jar文件編譯成了一個exe(是的,我把環境路徑里的jdk改了)。 現在我收到段錯誤消息。 但這已經更好了,至少它啟動了,盡管它在啟動后立即崩潰。 在里面,順便說一下,來自 Inteliji 的常用默認 javafx 程序的代碼,帶有 Hello javafx 按鈕

總的來說,我把遇到的問題都畫了。 我有兩個問題

  • 我怎樣才能像大公司那樣用我自己的 jre 分發我的 javafx 程序?
  • 如何將 javafx 程序編譯為原生圖像?

我的環境:

  • 視窗 10
  • Liberica Native Image Kit 22.3.0+2 (java17 jdk)
  • 最新版本的 Inteliji

我還將澄清,我不想強迫客戶下載任何東西(除了https://www.java.com/en/download/ ,但僅此而已),我想要一個完全原生的程序

對不起,如果它凌亂

我嘗試和做的一切都在上面描述

我理解您的沮喪,因為正確打包 JavaFX 應用程序變得比應有的復雜得多。 您必須組合使用許多工具,這也為錯誤留下了很大空間。 主要問題是官方 OpenJFX Maven 插件 ( https://github.com/openjfx/javafx-maven-plugin ) 仍然沒有打包選項。 它有一個 Jlink 目標,但在實踐中沒有太大幫助,因為它需要一個完全模塊化的應用程序,我還沒有在任何嚴肅的項目中看到它,因為許多重要的庫還沒有模塊化(而且可能永遠不會)。

因此,我與 Dirk 一起創建了一個演示項目,該項目結合了 jdeps、jlink 和 jpackage,它也可以處理非模塊化項目並為所有桌面平台構建應用程序和安裝程序。 也許您想看看這個 repo: https ://github.com/dlemmermann/JPackageScriptFX

您還可以使用 Gluons GluonFX 插件 ( https://github.com/gluonhq/gluonfx-maven-plugin ),它確實包含一個打包選項,但在內部使用 GraalVM native-image,這需要一些額外的小心才能讓它運行,我個人從來沒有覺得在桌面上需要這個。 如果您還想移動,這是最好的選擇。

暫無
暫無

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

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