JAVA SWT/AWT Eclipse Mac OSX Java Cocoa CompatibilityMode Enabled - программирование

JAVA SWT/AWT Eclipse Mac OSX Java Cocoa CompatibilityMode Enabled

Я разрабатываю довольно сложное смешивание приложений Java Swing и SWT. Всякий раз, когда я запускаю приложение, это консольный вывод (и приложение не появляется):

2012-12-19 12:45:45.359 java[3442:f07] [Java CocoaComponent compatibility mode]: Enabled
2012-12-19 12:45:45.360 java[3442:f07] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000

Я следил за множеством инструкций и инструкций:

  • System.setProperty("com.apple.awt.CocoaComponent.CompatibilityMode", "false");
  • -XstartOnSecondThread
  • --launcher-on-secondThread

Теперь у меня нет никакой подсказки. Единственный способ заставить мое приложение работать с Mac OSX - export the Eclipse project to a JAR executable. Ну, это раздражает. Может кто-нибудь объяснить мне, как установить эти свойства выше? Есть ли какой-нибудь волшебный трюк?

EDIT: я использую:

OSX Mountain Lion 10.8.2 ,
Java 1.6u37 64bit,
SWT 4.2 cocoa x64,
Windows XP ,
Java 1.6u37 32bit,
SWT 4.2 32bit 
4b9b3361

Ответ 1

У меня была эта проблема несколько раз, так как я работаю в магазине Java, где каждый использует Eclipse, и я являюсь пользователем OS X.

Исправление немного странно.

Вам нужно удалить текущую JRE из настройки "Установленные JRE", а затем добавить ее снова. Когда вы это сделаете, убедитесь, что вы выбрали "Стандартный JVM", а не "Mac OS X JVM".

Добавление JRE немного раздражает, поэтому прежде чем вы это сделаете, обратите внимание на строку пути "Местоположение". Вы укажете его на одно и то же место, просто измените свойство "Тип".

Итак, мой ответ неверен. Это уместно, если вы делаете только Swing/AWT, но достаточно юмористично сразу после публикации этого я должен был написать SWT_AWT boondoggle, и я получил ту же ошибку на своем Mac даже с вышеуказанными настройками. Я подозреваю, что это связано с различиями между Swing/AWT и SWT в отношении цикла событий (SWT = принести свой собственный, Swing = предоставленный JVM). Я также получаю ошибку в IntelliJ IDEA 12, поэтому она не может быть проблемой Eclipse.

Ответ 2

У меня была такая же проблема в моем Macbook, так как я вижу, что вы загружаете Eclipse Indigo, и это лучшее, что вы можете сделать. У Juno есть ошибки, а также медленные, так как он потребляет больше производительности, чем предыдущие версии. Я думаю, что Индиго - лучший вариант. Я знаю, что Java является переносной и многоплатформенной, но после работы с яблочными устройствами я обнаружил какую-то несовместимость с Java, я думаю не из-за Java, а из-за iOS, поэтому для меня лучше всего было установить виртуальную машину с Ubuntu. Таким образом, вы можете попробовать то же самое с дистрибутивом Linux, который вы предпочитаете.

Ответ 3

У меня была симулятивная проблема, когда я использовал банку для генерации графов. je jar использовал swt, который, похоже, несовместим с OSX. Если вы используете swt или импортировали банку, используя команду swt, удалив ее и вернув эквивалент, который использует awt