gpt4 book ai didi

java - 使用 warble 将带有 Rubeus 和 Swing 的 JRuby 脚本打包到 jar 中后退出

转载 作者:行者123 更新时间:2023-12-02 07:07:03 25 4
gpt4 key购买 nike

我正在尝试将一个简单的 JRuby 脚本打包到一个 jar 文件中。该脚本使用 Rubeus::Swing 并在使用 JRuby 解释器执行时正确运行。

require 'rubygems'
require 'rubeus'

class Example01
extend Rubeus::Swing
def show
JFrame.new("Rubeus Swing Example 01") do |frame|
frame.visible = true
end
end
end
Example01.new.show

一旦我用 warble 将脚本打包到 JAR 中,当我执行时:

java -jar jtest.jar

... JFrame 窗口出现并立即关闭。

没有任何类型的错误指示。

有人知道为什么会这样吗?

最佳答案

在您的主脚本退出后,Warbler 会调用 System.exit()。这会导致 Swing EventThread 退出,关闭您的应用程序。

https://github.com/jruby/warbler/blob/master/ext/JarMain.java#L131

我通过在启动脚本底部加入事件线程来解决这个问题,如下所示:

event_thread = nil
SwingUtilities.invokeAndWait { event_thread = java.lang.Thread.currentThread }
event_thread.join

Hacky,但它有效。

关于java - 使用 warble 将带有 Rubeus 和 Swing 的 JRuby 脚本打包到 jar 中后退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com