簡體   English   中英

Install4J 在 Mac OS Ventura 13.01 中的 JavaFX 應用程序上啟動啟動錯誤,收到 ClassNotFoundException

[英]Install4J launch start error on JavaFX App in Mac OS Ventura 13.01, recieving a ClassNotFoundException

我們將 Install4J 用於我們的應用程序,並將我們的應用程序提交到 Mac App Store 以供批准。 Install4J 為我們做了很多繁重的工作,因此我們可以專注於開發我們的應用程序。 我們已經將我們的App更新到最新版本Java 19 和JavaFX 19 但版本似乎與錯誤沒有區別。 我們還嘗試恢復到以前的 Java-JavaFX 版本,但發現了同樣的問題。 更新到 OS Ventura 13.01 后,Install4J 可以毫無錯誤地構建應用程序。 但是,該應用程序無法啟動並向我們顯示以下錯誤:

java.lang.ClassNotFoundException: app.myApp.AppLauncher
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:80)
    at com.install4j.runtime.launcher.MacLauncher.main(MacLauncher.java:52)

我們還嘗試恢復到以前的 Java-JavaFX 版本,但發現了同樣的問題。 在更新到 OS Ventura 13.01 之前,構建、安裝和啟動都可以正常工作。

使用 log=true 我們能夠得到請求的 output:

具體來說:

2023-01-11 10:22:31.923 JavaApplicationStub[8807:437234] -[Launcher launch] [Line 1068] arg -Djava.class.path=/Applications/FlashMonkey.app/Contents/Resources/app/.install4j/i4jruntime.jar:/Applications/FlashMonkey.app/Contents/Resources/app/flashmonkey-deploy-1.4.2-shaded.jar\

更新:我們能夠啟動(運行)基於 Mac OS 12.6.1 構建的應用程序。 到目前為止,我們無法啟動基於 Mac OS 13.01 Ventura 構建的應用程序。 我們已經在之前成功的設置中恢復並編譯了應用程序。 唯一的區別是系統操作系統。

有沒有人成功構建安裝和啟動基於 Ventura 構建的 JavaFX 應用程序? 更新 2023-01-12 @1024 EST:

  • Ingo Kegal 確認 OS Ventura 和使用 Install4J 構建應用程序沒有問題......
  • 檢查我們是否在 xCode、應用商店、密碼等可能需要更改的任何信息之間做出假設。
  • 一些細節,我們的 jar 使用$ java -jar dirToMyApp/myAppName但是!!! 使用$ INSTALL4J_LOG=yes myPath\JavaApplicationStub打印的類路徑是正確的。

更新 2023-01-12 @1602 EST
解決了:

  • 我們能夠使用先前從 App Store 設置的信息,讓我們的平台在 OS Ventura 和 Install4J 上構建。 我們沒有在我們和應用商店之間重新創建任何信息。 所有密碼都一樣。 澄清一下,我們已經看到 Apple 在操作系統中進行了許多更改,並且在尋找錯誤時,這成為變量之一。
  • 我們發現了最后一個錯誤。 不止一個導致了一系列循環問題。 首先,確保構建了正確版本的 jar。 工作流程的組織和對細節的關注幫助我們發現進行了多次迭代和更改,但是我們沒有看到應用程序的更改版本。 其次,當我們啟動應用程序時,我們沒有看到來自 Install4J 的日志 output。 謝謝@IngoKegel。 這樣我們就能夠看到 class 路徑。 這是問題之一。 第三個是我們的代碼中的錯誤,導致啟動時崩潰。 Jars 甚至應用程序都不會從與 Apple 應用程序相同的文件位置運行。 因此,除了已安裝的 Apple 應用程序外,不會發生導致應用程序初始化失敗的錯誤。
  • 應用程序數據文件,即您在應用程序中創建的數據文件,保存在用戶 -> myUserDirectory ->.Library -> 容器 -> myAppNameDirectory 中的不同目錄中。 注意“.” 前面的庫是一個隱藏目錄
  • 清理我們的應用名稱簡化了我們的流程。 我們沒有讓 IDE 命名為 jar,而是將其清理為簡單的“myApp.jar”,它通常位於 IDE 項目的目標目錄中。至少在我們的例子中是這樣。 這減少了 Install4J 查找 jar 的混淆。如果名稱始終相同,則避免了以下情況:應用程序構建后,當您安裝應用程序時,如果有以前版本的.pkg,它將是安裝的版本。 在我們的例子中,我們的應用程序在其名稱中包含版本,但是如果我們沒有在 Install4J 中更新它,盡管 Jar 的名稱不同,但安裝的應用程序不是來自我們剛剛創建的 jar。 我們能夠檢測到這一點,因為我們在我們的產品中包含了構建時間戳。 然而,這也可以通過檢查文件系統中的文件創建日期來確認。
  • 通過這些更改,我們能夠成功構建、安裝和啟動我們的應用程序。 我們能夠成功地使用傳輸應用程序重新提交我們的更新版本,並重新提交到 Apple Store。
  • 如果這不是一個完美的書面答案,我們深表歉意。 我將尊重馬克吐溫對簡潔答案的評論。

暫無
暫無

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

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