与鲁伯和Swing的JRuby脚本退出一次打包成使用的jar颤声(JRuby script with

2019-06-23 12:50发布

我想打包一个简单的JRuby脚本到一个JAR文件。 该脚本使用鲁伯:: 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

有一次,我打包脚本与一个JAR warble ,当我执行:

java -jar jtest.jar

... JFrame中窗口显示了,并立即关闭。

没有任何一种错误的指示。

有谁知道为什么出现这种情况?

Answer 1:

莺主脚本退出后调用System.exit()。 这使得摆动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

哈克,但它的作品。



Answer 2:

只要设置相应的标志:

System.setProperty("warbler.skip_system_exit","true");


文章来源: JRuby script with Rubeus and Swing exiting once packaged into jar using warble