JDK6/7 在 Ubuntu 7.10 下的错误。

软件和网站开发以及相关技术探讨
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

JDK6/7 在 Ubuntu 7.10 下的错误。

#1

帖子 oneleaf » 2007-12-05 17:07

如果采用 LC_CTYPE=zh_CN.UTF-8 情况下,部分 swing 界面的java程序会无法启动:

代码: 全选

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at com.sun.java.swing.plaf.gtk.GTKLookAndFeel.initSystemColorDefaults(GTKLookAndFeel.java:1267)
        at com.sun.java.swing.plaf.gtk.GTKLookAndFeel.loadStyles(GTKLookAndFeel.java:1509)
        at com.sun.java.swing.plaf.gtk.GTKLookAndFeel.access$000(GTKLookAndFeel.java:37)
        at com.sun.java.swing.plaf.gtk.GTKLookAndFeel$WeakPCL$1.run(GTKLookAndFeel.java:1449)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at com.sun.java.swing.plaf.gtk.GTKLookAndFeel.initSystemColorDefaults(GTKLookAndFeel.java:1267)
        at com.sun.java.swing.plaf.gtk.GTKLookAndFeel.loadStyles(GTKLookAndFeel.java:1509)
        at com.sun.java.swing.plaf.gtk.GTKLookAndFeel.access$000(GTKLookAndFeel.java:37)
        at com.sun.java.swing.plaf.gtk.GTKLookAndFeel$WeakPCL$1.run(GTKLookAndFeel.java:1449)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
JConsole: null
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at javax.swing.MultiUIDefaults.getUIError(MultiUIDefaults.java:117)
        at javax.swing.UIDefaults.getUI(UIDefaults.java:741)
        at javax.swing.UIManager.getUI(UIManager.java:1012)
        at javax.swing.JPanel.updateUI(JPanel.java:109)
        at javax.swing.JPanel.<init>(JPanel.java:69)
        at javax.swing.JPanel.<init>(JPanel.java:92)
        at javax.swing.JPanel.<init>(JPanel.java:100)
        at javax.swing.JRootPane.createGlassPane(JRootPane.java:527)
        at javax.swing.JRootPane.<init>(JRootPane.java:347)
        at javax.swing.JFrame.createRootPane(JFrame.java:260)
        at javax.swing.JFrame.frameInit(JFrame.java:241)
        at javax.swing.JFrame.<init>(JFrame.java:208)
        at sun.tools.jconsole.JConsole.<init>(JConsole.java:96)
        at sun.tools.jconsole.JConsole$6.run(JConsole.java:746)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

不用考虑升级到最新的 jdk-6u10-ea-bin-b08 ,已经测试还是不行。

有三种解决办法:
1 换为 JDK5
2 修改LookAndFeel: _JAVA_OPTIONS="-Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel"(推荐/不一定有效,有些程序强制性使用系统的风格)
3 修改环境变量为 LC_CTYPE=en_GB.UTF-8 ,可能引发无法输入中文的问题。
上次由 oneleaf 在 2007-12-05 17:51,总共编辑 2 次。
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#2

帖子 oneleaf » 2007-12-05 17:37

即:可以修改 /etc/environment 文件在最后增加上:

AWT_TOOLKIT="MToolkit"
_JAVA_OPTIONS="-Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel"
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#3

帖子 oneleaf » 2007-12-05 17:48

如果是写程序,最好在程序的main方法里面第一行增加:
try {
UIManager.setLookAndFeel(new javax.swing.plaf.metal.MetalLookAndFeel());
} catch (UnsupportedLookAndFeelException ex) {
}
洛泺
帖子: 8
注册时间: 2007-07-10 18:40

#4

帖子 洛泺 » 2007-12-06 9:20

太感谢了,这问题困扰我很久了~~
头像
PL7s
帖子: 377
注册时间: 2007-03-15 23:44

#5

帖子 PL7s » 2007-12-09 23:29

不知道应该谁适应谁,就像JDK7下 eclipse起不来一样, SUN在想什么呢?用IBM的JDK他就高兴了?
For the love of PL7s
图片
图片
头像
anders0913
帖子: 15
注册时间: 2007-06-16 11:46

#6

帖子 anders0913 » 2007-12-16 15:56

对SUN有时真的很无语,自己的孩子已经不是自己的了。
头像
thyme
帖子: 38
注册时间: 2007-06-16 16:36
来自: #17 city
联系:

#7

帖子 thyme » 2008-01-21 16:19

哎,啥时候能解决呀。。。。。。。
头像
hubert_star
论坛版主
帖子: 5373
注册时间: 2007-10-29 22:12
系统: OSX 10.9 + Ub 1304
来自: 江苏南京

#8

帖子 hubert_star » 2008-01-21 16:26

sun的java怎么说好呢,其实如果能把swing这块做好也不是没有可能的,写程序感觉swing的方式还是不错的,但是风格这块的实现逻辑还是有问题,又想兼容这个,又想兼容那个,其实倒不如把自己的metal固定死了好好搞

不光是这个,还有一个字体的问题,说起来,都是要做兼容性惹得祸
佛经说,人有八苦: 生、老、病、死、求不得、怨憎、爱别离、五阴盛 故我苦!
圣经说,人有七罪: 饕餮、贪婪、懒惰、淫欲、傲慢、嫉妒和暴怒  故我有罪!

我这篇帖子里面没有任何攻击我们伟大的中华人民共和国政府和任劳任怨的人民公仆(和本论坛高素质的版主)的文字和含义;

特此声明!

有些事,我们明知道是错的,也要去坚持,因为不甘心;有些人,我们明知道是爱的,也要去放弃,因为没结局;有时候,我们明知道没路了,却还在前行,因为习惯了。

欢迎来我的新浪微博@me
lowfire
帖子: 7
注册时间: 2008-02-19 16:19

#9

帖子 lowfire » 2008-02-19 16:28

:idea:
有用啊
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#10

帖子 oneleaf » 2008-03-11 14:44

代码: 全选

Locking assertion failure.  Backtrace:
#0 /usr/lib/libxcb-xlib.so.0 [0xb53d5767]
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb53d58b1]
#2 /usr/lib/libX11.so.6(_XReply+0xfd) [0xb54272ed]
#3 /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/xawt/libmawt.so [0xb552264e]
#4 /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/xawt/libmawt.so [0xb5500f97]
#5 /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/xawt/libmawt.so [0xb5501248]
#6 /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/xawt/libmawt.so(Java_sun_awt_X11GraphicsEnvironment_initDisplay+0x2f) [0xb550154f]
#7 [0xb5c8166e]
#8 [0xb5c79edd]
#9 [0xb5c79edd]
#10 [0xb5c77243]
#11 /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/client/libjvm.so [0x620bc6d]
#12 /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/client/libjvm.so [0x630a828]
#13 /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/client/libjvm.so [0x620bb00]
#14 /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/client/libjvm.so(JVM_DoPrivileged+0x34b) [0x62619bb]
#15 /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/libjava.so(Java_java_security_AccessController_doPrivileged__Ljava_security_PrivilegedAction_2+0x3d) [0xb7c9296d]
#16 [0xb5c8166e]
#17 [0xb5c79d77]
#18 [0xb5c77243]
#19 /usr/lib/jvm/java-6-sun-1.6.0.03/jre/lib/i386/client/libjvm.so [0x620bc6d]
java: xcb_xlib.c:82: xcb_xlib_unlock: Assertion `c->xlib.lock' failed. 
暂时的解决方法:

代码: 全选

sudo sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-6-sun/jre/lib/i386/xawt/libmawt.so
另一个方法就是添加

代码: 全选

export LIBXCB_ALLOW_SLOPPY_LOCK=1
头像
why_790721
帖子: 295
注册时间: 2006-12-01 22:28

#11

帖子 why_790721 » 2008-03-18 14:16

export LIBXCB_ALLOW_SLOPPY_LOCK=1
这句加在那个文件里?
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#12

帖子 oneleaf » 2008-03-18 17:06

why_790721 写了:export LIBXCB_ALLOW_SLOPPY_LOCK=1
这句加在那个文件里?
程序的启动脚本。
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#13

帖子 oneleaf » 2008-03-18 17:07

netbeans 无法输入/键盘失去响应,是Java6 bug,双击源代码窗口,最大化,再双击,恢复即可继续输入。
头像
matri
帖子: 1140
注册时间: 2006-10-27 11:14
来自: 悉尼

#14

帖子 matri » 2008-03-18 18:17

sun不知道在搞什么。。。
头像
why_790721
帖子: 295
注册时间: 2006-12-01 22:28

#15

帖子 why_790721 » 2008-03-19 12:10

oneleaf 写了:
why_790721 写了:export LIBXCB_ALLOW_SLOPPY_LOCK=1
这句加在那个文件里?
程序的启动脚本。
能告诉我具体的步骤吗?
我现在用j2me WTK2.5.2和NetBeans制作手机游戏,但是原来能运行的程序全都运行不了,提示:
WTK2.5.2/bin/preverify": java.io.IOException: error=2, No such file or directory
可这个目录明明有这个文件呀,这是怎么回事?
我现在没时间研究LINUX系统,只想快点把JAVA鼓捣好,尽快能使用!
回复