我目前正在使用 SWT 独立应用程序。我们通常使用 Windows,但我想在 Ubuntu 中工作。我设置了以下环境。
Ubuntu 11.04 64 位 Java 6 更新 27 64 位 Eclipse Java EE 3.5 Galileo 64 位 我正在使用 SWT GTK 64 位
我有几个类扩展了不同的 SWT 小部件。
例如
public class MyCombo extends Combo implements CellEditor<Long> {
private Set<ListenerRef> listeners = new HashSet<ListenerRef>();
@Override
public void addListener(int eventType, Listener listener) {
listeners.add(new MyCombo.ListenerRef(eventType, listener));
super.addListener(eventType, listener);
}
@Override
protected void checkSubclass() {
// Do nothing
}
.
.
.
此代码在 Eclipse 32 位运行 SWT32 位和 java32 位的 Windows 7 64 位中运行良好。
在 Ubuntu 11.04 中,我在尝试添加侦听器时收到 NPE (NullPointerException),似乎侦听器集为空,但这不应该导致该集应该像上面的代码一样初始化,正如我所说的那样它适用于Windows 7的
首先,我在 Ubuntu64 位中运行 SWT 32 位应用程序时遇到问题,因为在 64 位 ubuntu 中运行 32 个应用程序时似乎存在错误,所以我尝试使用 64 位版本运行它,现在我收到了这个错误。如果我避免这个 NPE 检查集合,我最终会得到一个
java.lang.NullPointerException
at org.eclipse.swt.accessibility.Accessible.isValidThread(Unknown Source)
at org.eclipse.swt.accessibility.Accessible.checkWidget(Unknown Source)
at org.eclipse.swt.accessibility.Accessible.addRelation(Unknown Source)
关于可能是什么原因的任何想法?你在以前的 Ubuntu 发行版中知道这个问题吗?我在 Windows 7 中没有遇到这个问题,至少运行 SWT 32 位
如果您需要更多详细信息,请告诉我
谢谢并恭祝安康
顺便说一句,我忘记了,SWT 在 Linux 中是 3.7,在 Windows 中是 3.6.2