Что касается моего предыдущего ответа, обе ошибки теперь закрыты как исправленные.
ошибка 303869 в частности, были закрыты в начале этого месяца с:
Iдумаю, что мы можем закрыть эту ошибку, теперь она работает хорошо с последним обновлением Java для Mac OS X 10.6.
Мы можем выполнить код в главном потоке, и теперь отображается пользовательский интерфейс.В апплете мы используем код, подобный следующему, для создания экземпляра дисплея:
com.apple.concurrent.Dispatch.getInstance().getNonBlockingMainQueueExecutor().execute(
new Runnable(){
@Override
public void run() {
if( dDisplay == null )
{
dDisplay = Display.getDefault();
sShell = SWT_AWT.new_Shell(dDisplay, cCanvas);
mLogger.info("Display is created");
}
...
}
} );
...
Спасибо всем, и особенно Майку из Apple, за решение проблемы, она была не столько связана с SWTИМХО.
Для ошибка 288436 :
Да, в файле JNLP есть небольшая ошибка, которая вызывает проблему.
Указание «<j2se version="1.6*" />
» в теге «<resources>
» без каких-либо других атрибутов отбрасывает анализатор JNLP и приводит к игнорированию более поздней строки «<j2se version="1.6*" java-vm-args="-XstartOnFirstThread"/>
».
Две строки заканчиваются ссылкой на дваотдельные JVM, и первая спецификация - «выигрыш».Эта спецификация не имеет аргументов VM, поэтому JVM запускается нормально, а SWT загружается не в тот поток.
Параметр -XstartOnFirstThread
упоминается в ошибка 211625 :
Это необходимо, поскольку для Cocoa требуется, чтобы все пользовательские события отправлялись в потоке 0.
Без -XstartOnFirstThread
, отображение будетсоздайте NSApplication
в неосновном потоке, и SWT не сможет извлекать и отправлять события из неосновного потока.
Будьте осторожны с -XstartOnFirstThread
option: liek this ошибка упоминает :
Причина этого заключается в том, что новый режим разработчика реализован в Swing, а старый размещенный режим был реализован в SWT.
SWT требует -XstartOnFirstThread для работы на Mac.
Но это, однако, ломает любую Java-программу, использующую Swing.
Так что вы не можете добавить -XstartOnFirstThread
с версии 2.0 и выше,В более старых версиях это все же требование.