Swing 应用程序在启动后立即关闭
Swing application closes right away after launch
我有一个简单的 JRuby Swing 应用程序,它使用 Warbler 编译并打包到 jar 中。执行jar文件后,Swing框架出现并立即关闭
include Java
import java.awt.Font
import javax.swing.JFrame
import javax.swing.JPanel
import javax.swing.JLabel
class Main
def initialize
@logInWin = JFrame.new
basic = JPanel.new
font = Font.new "Verdana", Font::PLAIN, 16
loginL = JLabel.new "Login"
loginL.setFont font
basic.add loginL
@logInWin.add basic
@logInWin.pack
@logInWin.setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
@logInWin.setSize 350, 350
@logInWin.setLocationRelativeTo nil
@logInWin.setTitle "Log In"
@logInWin.setVisible true
end
end
Main.new
如何避免这种行为?
环境:
OS: 赢 8
Java(TM) SE 运行环境(build 1.8.0_11-b12)
Java HotSpot(TM) 64 位服务器 VM(内部版本 25.11-b03,混合模式)
jruby 9.0.0.0.rc1 (2.2.2) 2015-06-10 a0bf3b3 Java HotSpot(TM) 64 位服务器 VM 25.11-b03 on 1.8.0_11-b12 +jit [ Windows8-amd64]
莺版本 1.4.8
这个问题已经存在:
JRuby script with Rubeus and Swing exiting once packaged into jar using warble
Add at the bottom of the main script:
event_thread = nil
SwingUtilities.invokeAndWait { event_thread = java.lang.Thread.currentThread }
event_thread.join
我有一个简单的 JRuby Swing 应用程序,它使用 Warbler 编译并打包到 jar 中。执行jar文件后,Swing框架出现并立即关闭
include Java
import java.awt.Font
import javax.swing.JFrame
import javax.swing.JPanel
import javax.swing.JLabel
class Main
def initialize
@logInWin = JFrame.new
basic = JPanel.new
font = Font.new "Verdana", Font::PLAIN, 16
loginL = JLabel.new "Login"
loginL.setFont font
basic.add loginL
@logInWin.add basic
@logInWin.pack
@logInWin.setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
@logInWin.setSize 350, 350
@logInWin.setLocationRelativeTo nil
@logInWin.setTitle "Log In"
@logInWin.setVisible true
end
end
Main.new
如何避免这种行为?
环境:
OS: 赢 8
Java(TM) SE 运行环境(build 1.8.0_11-b12)
Java HotSpot(TM) 64 位服务器 VM(内部版本 25.11-b03,混合模式)
jruby 9.0.0.0.rc1 (2.2.2) 2015-06-10 a0bf3b3 Java HotSpot(TM) 64 位服务器 VM 25.11-b03 on 1.8.0_11-b12 +jit [ Windows8-amd64]
莺版本 1.4.8
这个问题已经存在: JRuby script with Rubeus and Swing exiting once packaged into jar using warble
Add at the bottom of the main script:
event_thread = nil SwingUtilities.invokeAndWait { event_thread = java.lang.Thread.currentThread } event_thread.join