Короче говоря, я обнаружил, что должен запускать свои Java-приложения без "-XstartOnFirstThread".Тем не менее, Eclipse предоставляет этот аргумент любому java-приложению, запущенному через Eclipse (см. Свойства запущенного приложения в режиме отладки).
Я не могу видеть, откуда берутся эти аргументы по умолчанию и как я могу настроить или удалитьих.Поля аргументов в «Run Configurations» пусты и поля для аргументов по умолчанию для моей текущей JRE также пусты (можно найти через Свойства -> Java -> Установленные JRE -> Редактировать).
Буду признателен за любую помощь!
Длинная история: я получил ошибку *** __NSAutoreleaseNoPool(): Object 0x100166860 of class NSConcreteMapTableValueEnumerator autoreleased with no pool in place - just leaking
при запуске приложения на основе Swing практически без логики.Я знал, что приложение работает нормально под Windows и Linux, поэтому это не было ошибкой в коде.
У меня не было проблем с отображением ошибки, поскольку приложение все же запустилось.Однако я не мог взаимодействовать с окном.Это означает, что я не мог сфокусироваться на нем (он автоматически переместился на фон, когда я его сфокусировал), и я не мог нажимать никакие кнопки или меню.
После часа копания в Интернете я обнаружил, что:
- это проблема, когда SWT и AWT работают одновременно (AWT зависает при загрузке, если загружен SWT)
- эта проблема возникает только при запуске из затмения, запускаприложение через консоль (без аргументов) все работает нормально
- эта проблема возникает при использовании неверного потока (упомянутые
-XstartOnFirstThread
и -XstartOnSecondThread
аргументы)
Теперь яЯ близок к своей цели, так как знаю, что мне нужно заменить -XstartOnFirstThread
на -XstartOnSecondThread
(протестировано с консоли - приложение отлично работает во втором потоке и выдает опубликованную ошибку в первом потоке).Теперь мне нужно только знать, как удалить аргумент по умолчанию, который предоставляется любому java-приложению, запущенному через Eclipse.
Еще раз спасибо!
РЕДАКТИРОВАТЬ: Как упоминалось, проблема возникает из-зак аргументу -XstartOnFirstThread
.Однако решение не состояло в том, чтобы удалить этот аргумент (невозможно, см. Принятый ответ): Решение состоит в том, чтобы удалить swt.jar
из пути к классам.
Это связано с тем, что Eclipse добавляет этот аргумент, когда swt.jar
находится в пути к классам.Загрузка библиотеки приводит к описанным проблемам, хотя она не используется.