jpackage 在正常运行的 .jar 文件上使用时会创建损坏的 .app 文件

问题描述 投票:0回答:1

我有一个名为 Alphabet.jar 的有效 .jar 文件。我获取正常运行的 .jar 文件,并将其放置在名为 test/ 的空目录中。运行jpackage后,我成功得到了一个Mac应用程序。通过双击运行应用程序时,我收到以下消息:

“GravitySim”已损坏,无法打开。您应该将其移至垃圾箱。

.jar 文件单独运行成功,使用:

... $ java -jar Alphabet.jar
Warning: the fonts "Times" and "Times" are not available for the Java logical font "Serif", which may have unexpected appearance or behavior. Re-enable the "Times" font to remove this warning.

然后打开一个窗口/gui,程序在其中运行。伟大的。然后我 cd 进入 test/ 目录的父目录,并运行 jpackage:

... test/ $ jpackage \                
  --name GravitySim \
  --input test/ \
  --main-jar Alphabet.jar \
  --main-class Alphabet \
  --type dmg

这会创建一个 .dmg,我打开它,将 .app 移动到应用程序中,然后运行它。出现“GravitySim 已损坏...”错误。如果我改用 --type app-image ,则会出现同样的问题。是什么原因导致这个问题?

我正在使用: openjdk版本“16.0.2”2021-07-20 OpenJDK 运行时环境 Microsoft-25298(内部版本 16.0.2+7) OpenJDK 64 位服务器 VM Microsoft-25298(内部版本 16.0.2+7,混合模式)

我使用的是配备 macOS Sonoma 14.0 的 M1 Macbook Air。任何帮助将不胜感激。

java macos jar dmg jpackage
1个回答
0
投票

我发现了同样的问题,并得出结论,它与 MacOS 安全设置有关,而且我的应用程序未签名(根据 Apple 的说法)。

我的解决方案是删除 .dmg 并以 .pkg 形式分发。

在实践中,我使用命令来准备appimage并完成pkg。用户已确认 pkg 安装有效 - 我无法测试自己。

    jpackage \
      --type app-image \
      --app-version "1.0.0" \
      --copyright Copyright \
      --description "Product 1.0.0" \
      --name "Product" --dest target/appimage \
      --temp target/product-tmp --vendor "queeg" --verbose \
      --icon product/src/main/resources/product_logo.png \
      --input Product-1.0.0/dist \
      --main-jar Product-1.0.0.jar \
      --main-class product.Main --mac-package-name "Product" \
      --resource-dir product/src/jpackage/resources-mac \


    jpackage \
      --type pkg \
      --verbose \
      --app-version "1.0.0" \
      --app-image target/appimage/Product.app \
      --name "Product" \
      --icon product/src/main/resources/product_logo.png \
      --dest target \
      --resource-dir product/src/jpackage/resources-mac \
      --vendor queeg
© www.soinside.com 2019 - 2024. All rights reserved.