В настоящее время я работаю в отдельном приложении SWT. Обычно мы работаем с окнами, но я бы хотел работать в Ubuntu. Я настроил следующую среду.
Ubuntu 11.04 64bit
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
}
.
.
.
Этот код прекрасно работает в 64-битной Windows 7, с битами SWT32 и java32, из 32-битного затмения.
В Ubuntu 11.04 я получаю NPE (NullPointerException) при попытке добавить прослушиватель, кажется, что набор слушателей имеет значение null, но это не должно вызывать инициализацию этого набора, как в приведенном выше коде, и, как я говорю работает в Windows 7
Сначала у меня возникли проблемы с запуском 32-битного приложения SWT в Ubuntu64, потому что, похоже, была ошибка при запуске 32 приложений в 64-Ubuntu, поэтому я попытался запустить его с 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, по крайней мере, работает 32-битный SWT
Пожалуйста, дайте мне знать, если вам нужно больше деталей
Спасибо и всего наилучшего
Кстати, я забыл, SWT - 3.7 в Linux и 3.6.2 в Windows