当我使用 hsqldb 时,我遇到了 GUI (JavaFx) 问题
When I use hsqldb I have problems with GUI (JavaFx)
我不明白 RDB 如何与 GUI 链接,但我已经检查了几次。我有 osgi javafx 应用程序。当我安装 hsqldb 并使用数据库时,我遇到了奇怪的问题:
在那之前我用过 h2 而我没有那样的东西。唯一改变的是 RDB。我检查了centos 7.1和win 7(VBOX)结果是一样的。
1) 当我按下 CTRL+SHIFT 时,出现了很多以下异常:
java.lang.ArrayIndexOutOfBoundsException: 85
at sun.awt.X11.XEvent.getFieldsAsString(XEvent.java:86)
at sun.awt.X11.XWrapperBase.toString(XWrapperBase.java:37)
at sun.awt.X11.XEvent.toString(XEvent.java:8)
at java.lang.String.valueOf(String.java:2994)
at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:626)
at sun.util.logging.PlatformLogger.finer(PlatformLogger.java:387)
at sun.awt.X11.XToolkit.run(XToolkit.java:586)
at sun.awt.X11.XToolkit.run(XToolkit.java:532)
at java.lang.Thread.run(Thread.java:745)
2) 我的 javafx 数据绑定停止工作
3) 当我通过 CTRL+C 关闭应用程序时,我得到以下信息:
^C=========== Performance Statistics =============
Time: com.sun.webkit.perf.WCFontPerfLogger.GETASCENT: 0ms, 0.00%
com.sun.webkit.perf.WCFontPerfLogger.GETLINEGAP: 0ms, 0.00%
com.sun.webkit.perf.WCFontPerfLogger.GETGLYPHWIDTH: 0ms, 0.00%
com.sun.webkit.perf.WCFontPerfLogger.GETDESCENT: 0ms, 0.00%
com.sun.webkit.perf.WCFontPerfLogger.HASH: 0ms, 0.00%
com.sun.webkit.perf.WCFontPerfLogger.GETLINESPACING: 1ms, 0.00%
com.sun.webkit.perf.WCFontPerfLogger.HASUNIFORMLINEMETRICS: 1ms, 0.00%
com.sun.webkit.perf.WCFontPerfLogger.GETXHEIGHT: 1ms, 0.00%
com.sun.webkit.perf.WCFontPerfLogger.GETGLYPHCODES: 32ms, 0.11%
com.sun.webkit.perf.WCFontPerfLogger.TOTALTIME: 29131ms, 100.00%
Invocations count: com.sun.webkit.perf.WCFontPerfLogger.GETASCENT: 1
com.sun.webkit.perf.WCFontPerfLogger.GETLINEGAP: 1
com.sun.webkit.perf.WCFontPerfLogger.GETDESCENT: 1
com.sun.webkit.perf.WCFontPerfLogger.HASH: 1
com.sun.webkit.perf.WCFontPerfLogger.GETLINESPACING: 1
com.sun.webkit.perf.WCFontPerfLogger.HASUNIFORMLINEMETRICS: 1
com.sun.webkit.perf.WCFontPerfLogger.GETXHEIGHT: 1
com.sun.webkit.perf.WCFontPerfLogger.TOTALTIME: 1
com.sun.webkit.perf.WCFontPerfLogger.GETGLYPHCODES: 2
com.sun.webkit.perf.WCFontPerfLogger.GETGLYPHWIDTH: 4
================================================
=========== Performance Statistics =============
Time: com.sun.webkit.perf.WCGraphicsPerfLogger.RESTORESTATE: 0ms,
0.00% com.sun.webkit.perf.WCGraphicsPerfLogger.SET_FONT_SMOOTHING_TYPE: 0ms,
0.00% com.sun.webkit.perf.WCGraphicsPerfLogger.SETCLIP_R: 0ms, 0.00% com.sun.webkit.perf.WCGraphicsPerfLogger.SETCOMPOSITE: 0ms, 0.00%
com.sun.webkit.perf.WCGraphicsPerfLogger.DISPOSE: 0ms, 0.00%
com.sun.webkit.perf.WCGraphicsPerfLogger.SAVESTATE: 0ms, 0.00%
com.sun.webkit.perf.WCGraphicsPerfLogger.SETCLIP_IIII: 1ms, 0.00%
com.sun.webkit.perf.WCGraphicsPerfLogger.TRANSLATE: 1ms, 0.00%
com.sun.webkit.perf.WCGraphicsPerfLogger.FLUSH: 2ms, 0.01%
com.sun.webkit.perf.WCGraphicsPerfLogger.DRAWSTRING_GV: 7ms, 0.02%
com.sun.webkit.perf.WCGraphicsPerfLogger.FILLRECT_FFFFI: 18ms, 0.06%
com.sun.webkit.perf.WCGraphicsPerfLogger.TOTALTIME: 29135ms, 100.00%
Invocations count: com.sun.webkit.perf.WCGraphicsPerfLogger.TOTALTIME:
1 com.sun.webkit.perf.WCGraphicsPerfLogger.DRAWSTRING_GV: 13
com.sun.webkit.perf.WCGraphicsPerfLogger.SETCLIP_R: 17
com.sun.webkit.perf.WCGraphicsPerfLogger.SETCLIP_IIII: 17
com.sun.webkit.perf.WCGraphicsPerfLogger.RESTORESTATE: 34
com.sun.webkit.perf.WCGraphicsPerfLogger.SAVESTATE: 34
com.sun.webkit.perf.WCGraphicsPerfLogger.TRANSLATE: 34
com.sun.webkit.perf.WCGraphicsPerfLogger.SET_FONT_SMOOTHING_TYPE: 44
com.sun.webkit.perf.WCGraphicsPerfLogger.FILLRECT_FFFFI: 45
com.sun.webkit.perf.WCGraphicsPerfLogger.SETCOMPOSITE: 68
com.sun.webkit.perf.WCGraphicsPerfLogger.DISPOSE: 88
com.sun.webkit.perf.WCGraphicsPerfLogger.FLUSH: 88
================================================
=========== Performance Statistics =============
Time: com.sun.webkit.perf.Locks.TOTALTIME: 29772ms, 100.00%
Invocations count: com.sun.webkit.perf.Locks.TOTALTIME: 1
如何解决?
我从 Fred Toussi 那里得到了答案(Fred,谢谢你):
hsqldb.jar 包含 DatabaseManagerSwing,这是一个 GUI 应用程序。您可以使用 Gradle 或 Ant(请参阅 /build 目录)作为 hsqldbmain.jar 编译 HSQLDB,这排除了 Swing 类.
有一个旧错误显示一些 JDK 的 Swing 类 有问题。 https://sourceforge.net/p/hsqldb/bugs/1304/
我不明白 RDB 如何与 GUI 链接,但我已经检查了几次。我有 osgi javafx 应用程序。当我安装 hsqldb 并使用数据库时,我遇到了奇怪的问题: 在那之前我用过 h2 而我没有那样的东西。唯一改变的是 RDB。我检查了centos 7.1和win 7(VBOX)结果是一样的。
1) 当我按下 CTRL+SHIFT 时,出现了很多以下异常:
java.lang.ArrayIndexOutOfBoundsException: 85
at sun.awt.X11.XEvent.getFieldsAsString(XEvent.java:86)
at sun.awt.X11.XWrapperBase.toString(XWrapperBase.java:37)
at sun.awt.X11.XEvent.toString(XEvent.java:8)
at java.lang.String.valueOf(String.java:2994)
at sun.util.logging.PlatformLogger$JavaLoggerProxy.doLog(PlatformLogger.java:626)
at sun.util.logging.PlatformLogger.finer(PlatformLogger.java:387)
at sun.awt.X11.XToolkit.run(XToolkit.java:586)
at sun.awt.X11.XToolkit.run(XToolkit.java:532)
at java.lang.Thread.run(Thread.java:745)
2) 我的 javafx 数据绑定停止工作
3) 当我通过 CTRL+C 关闭应用程序时,我得到以下信息:
^C=========== Performance Statistics =============
Time: com.sun.webkit.perf.WCFontPerfLogger.GETASCENT: 0ms, 0.00% com.sun.webkit.perf.WCFontPerfLogger.GETLINEGAP: 0ms, 0.00% com.sun.webkit.perf.WCFontPerfLogger.GETGLYPHWIDTH: 0ms, 0.00% com.sun.webkit.perf.WCFontPerfLogger.GETDESCENT: 0ms, 0.00% com.sun.webkit.perf.WCFontPerfLogger.HASH: 0ms, 0.00% com.sun.webkit.perf.WCFontPerfLogger.GETLINESPACING: 1ms, 0.00% com.sun.webkit.perf.WCFontPerfLogger.HASUNIFORMLINEMETRICS: 1ms, 0.00% com.sun.webkit.perf.WCFontPerfLogger.GETXHEIGHT: 1ms, 0.00% com.sun.webkit.perf.WCFontPerfLogger.GETGLYPHCODES: 32ms, 0.11% com.sun.webkit.perf.WCFontPerfLogger.TOTALTIME: 29131ms, 100.00%
Invocations count: com.sun.webkit.perf.WCFontPerfLogger.GETASCENT: 1 com.sun.webkit.perf.WCFontPerfLogger.GETLINEGAP: 1 com.sun.webkit.perf.WCFontPerfLogger.GETDESCENT: 1 com.sun.webkit.perf.WCFontPerfLogger.HASH: 1 com.sun.webkit.perf.WCFontPerfLogger.GETLINESPACING: 1 com.sun.webkit.perf.WCFontPerfLogger.HASUNIFORMLINEMETRICS: 1 com.sun.webkit.perf.WCFontPerfLogger.GETXHEIGHT: 1 com.sun.webkit.perf.WCFontPerfLogger.TOTALTIME: 1 com.sun.webkit.perf.WCFontPerfLogger.GETGLYPHCODES: 2 com.sun.webkit.perf.WCFontPerfLogger.GETGLYPHWIDTH: 4
================================================
=========== Performance Statistics =============
Time: com.sun.webkit.perf.WCGraphicsPerfLogger.RESTORESTATE: 0ms, 0.00% com.sun.webkit.perf.WCGraphicsPerfLogger.SET_FONT_SMOOTHING_TYPE: 0ms, 0.00% com.sun.webkit.perf.WCGraphicsPerfLogger.SETCLIP_R: 0ms, 0.00% com.sun.webkit.perf.WCGraphicsPerfLogger.SETCOMPOSITE: 0ms, 0.00% com.sun.webkit.perf.WCGraphicsPerfLogger.DISPOSE: 0ms, 0.00% com.sun.webkit.perf.WCGraphicsPerfLogger.SAVESTATE: 0ms, 0.00% com.sun.webkit.perf.WCGraphicsPerfLogger.SETCLIP_IIII: 1ms, 0.00% com.sun.webkit.perf.WCGraphicsPerfLogger.TRANSLATE: 1ms, 0.00% com.sun.webkit.perf.WCGraphicsPerfLogger.FLUSH: 2ms, 0.01% com.sun.webkit.perf.WCGraphicsPerfLogger.DRAWSTRING_GV: 7ms, 0.02% com.sun.webkit.perf.WCGraphicsPerfLogger.FILLRECT_FFFFI: 18ms, 0.06% com.sun.webkit.perf.WCGraphicsPerfLogger.TOTALTIME: 29135ms, 100.00%
Invocations count: com.sun.webkit.perf.WCGraphicsPerfLogger.TOTALTIME: 1 com.sun.webkit.perf.WCGraphicsPerfLogger.DRAWSTRING_GV: 13 com.sun.webkit.perf.WCGraphicsPerfLogger.SETCLIP_R: 17 com.sun.webkit.perf.WCGraphicsPerfLogger.SETCLIP_IIII: 17 com.sun.webkit.perf.WCGraphicsPerfLogger.RESTORESTATE: 34 com.sun.webkit.perf.WCGraphicsPerfLogger.SAVESTATE: 34 com.sun.webkit.perf.WCGraphicsPerfLogger.TRANSLATE: 34 com.sun.webkit.perf.WCGraphicsPerfLogger.SET_FONT_SMOOTHING_TYPE: 44 com.sun.webkit.perf.WCGraphicsPerfLogger.FILLRECT_FFFFI: 45 com.sun.webkit.perf.WCGraphicsPerfLogger.SETCOMPOSITE: 68 com.sun.webkit.perf.WCGraphicsPerfLogger.DISPOSE: 88 com.sun.webkit.perf.WCGraphicsPerfLogger.FLUSH: 88
================================================
=========== Performance Statistics =============
Time: com.sun.webkit.perf.Locks.TOTALTIME: 29772ms, 100.00%
Invocations count: com.sun.webkit.perf.Locks.TOTALTIME: 1
如何解决?
我从 Fred Toussi 那里得到了答案(Fred,谢谢你):
hsqldb.jar 包含 DatabaseManagerSwing,这是一个 GUI 应用程序。您可以使用 Gradle 或 Ant(请参阅 /build 目录)作为 hsqldbmain.jar 编译 HSQLDB,这排除了 Swing 类.
有一个旧错误显示一些 JDK 的 Swing 类 有问题。 https://sourceforge.net/p/hsqldb/bugs/1304/