Приложение Java Swing зависает при запуске в обычном режиме, но нормально работает в режиме отладки - PullRequest
1 голос
/ 07 мая 2010

Я пишу базовое Java-приложение с интерфейсом Swing.В основном он загружает некоторые данные из базы данных Derby через Apache Cayenne, а затем отображает их в JTable.Я делаю свою разработку в Eclipse, и я не думаю, что это важно, но я использую Maven для зависимостей.

Теперь это работает нормально, когда я запускаю с помощью Debug, но кажется, что когда я вижуиспользуйте кнопку Run.Я сделал дамп потока, и я не уверен на 100%, но все выглядит хорошо.Я использовал Java VisualVM, и потоки там тоже хорошо выглядят.

Странно, но, кажется, работает с перебоями.Это довольно последовательно, хотя и легко воспроизвести.Если у кого-то есть идеи, я все из них.

1 Ответ

5 голосов
/ 07 мая 2010

Это не должно быть проблемой, если вы используете Maven или Eclipse для приложений Swing. Мы делаем это все это время без проблем. Вы сказали, что не на 100% уверены, что с потоками все выглядит хорошо, поэтому публикация ваших тем была бы полезной, особенно когда ваше приложение зависло - возможно, у вас тупик.

Тот факт, что вы говорите, что это происходит периодически, заставляет меня поверить, что это проблема многопоточности. Запуск отладчика может привести к тому, что потоки будут работать по-другому, поэтому он может работать в режиме отладки. Проблемы с многопоточностью Swing часто бывают вызваны не выполнением обновлений графического интерфейса в потоке диспетчеризации событий, поскольку Swing не является поточно-ориентированным. Любая операция, которая обновляет компонент колебания прямо или косвенно (то есть, если он обновляет модель таблицы, которая затем обновляет таблицу), должна выполняться в потоке диспетчеризации событий

Если вы можете сузить блок кода, который вызывается при зависании приложения, вы должны опубликовать это, если можете, и это также будет полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...