【问题标题】:How to package Java GUI apps for Homebrew如何为 Homebrew 打包 Java GUI 应用程序
【发布时间】:2021-12-29 08:51:22
【问题描述】:

我正在尝试为自制软件打包一个 GUI 应用程序,但我遇到了问题。

我正在打包这个安装脚本,按照instructions at the Frankel.ch blog:

def install
    libexec.install Dir['*']
    bin.write_jar_script libexec/'FOSStriangulator.jar', 'fosstriangulator'
end

我使用depends_on "openjdk" 作为我的依赖项,因为文章推荐的depends_on :java => '1.8+' 不起作用。

但是在运行这个包时,我得到了这个错误:

java.lang.NoClassDefFoundError: com/apple/eawt/QuitHandler

这是因为我的应用不是库,而是 GUI 应用吗?

在终端中,仅通过 java -jar 运行对我来说很好。

【问题讨论】:

  • 其他提到该类的问题表明它自 Java 9 起不再受支持。QuitHandler 是/曾经是 Mac OS X 内部 API,在最近的版本中不再可访问。专门处理应用程序似乎有这个问题。
  • com.apple.eawt.QuitHandler 自 Java 9 起已替换为 Desktop.setQuitHandler

标签: java homebrew packaging


【解决方案1】:

正如其他人所说,QuitHandler 已被删除,但如果您绝对必须使用 JDK 8,您可以尝试复制需要它的 homebrew/core 公式之一。例如digdag 公式:

class Digdag < Formula
  url "https://dl.digdag.io/digdag-0.10.3.jar"
  sha256 "200911b6a35a3d8b40e25f028753fb9652aeb19dbd05b8f950dc35ff69547c34"

  depends_on arch: :x86_64 # openjdk@8 is not supported on ARM
  depends_on "openjdk@8"

  def install
    libexec.install "digdag-#{version}.jar"
    bin.write_jar_script libexec/"digdag-#{version}.jar", "digdag", java_version: "1.8"
  end
end

在你的情况下,你可能想要这样的东西:

class Fosstriangulator < Formula
  url "..."
  sha256 "..."

  depends_on arch: :x86_64 # openjdk@8 is not supported on ARM
  depends_on "openjdk@8"

  def install
    libexec.install Dir["*"]
    bin.write_jar_script libexec/"FOSStriangulator.jar", "fosstriangulator", java_version: "1.8"
  end
end
  • depends_on :java =&gt; '1.8+' 替换为 depends_on "openjdk@8"
  • 参数java_version: "1.8"应添加到bin.write_jar_script

【讨论】:

    猜你喜欢
    • 2017-01-28
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    相关资源
    最近更新 更多