2012-07-01 121 views
0

我决定检查JRuby和JOGL以查看是否可以运行某些图形SIM卡。我已经设置了类路径,并且正确地包含了OpenGL的东西。遵循一些教程,他们建议使用AWT框架而不是Swing框架,因为Swing不支持图形加速(这正是我正在寻找的)。但是,我不知道如何关闭来自Ruby的AWT框架。我有一个WindowAdapter,当点击框架上的关闭按钮时触发一个Kernel.exit事件。它看起来像这样:JRuby关闭AWT框架

class Controller < WindowAdapter 
    def windowClosing(event) 
    Kernel.exit 
    end 
end 

该框架将此与add_window_listener(Controller.new)相加。当我点击关闭按钮的事件触发成功,但它吐出以下错误:

Exception in thread "AWT-EventQueue-0" org.jruby.exceptions.RaiseException: (SystemExit) exit

从框架的初始化调用Kernel.exit成功退出程序。所以我不确定为什么从监听器调用它失败。我知道在java中你可以定义一个匿名的WindowAdapter内联,但我不知道Ruby的语法是什么。

回答

0

我做了一些额外的搜索和实验,并找到了答案。这似乎是JVM中Ruby实现的一个怪癖。从WindowAdapter中调用exitKernel.exit是毫无用处的。

打电话java.lang.System.exit(0),但是,确实工作。我不确定为什么区分应该有所作为。我希望exit别名到Java系统命令,但它显然不希望这可能会遇到同样的问题的任何人都有帮助。