Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> зависает фома JavaFX 
V
    Опции темы
BSOD
Дата 29.4.2010, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 1.11.2004
Где: Гомель

Репутация: нет
Всего: 3



Делаю игру с использованием JavaFX.
Есть клиент на Java. Делаю гуй. Сделал две сцены (при помощи дизайнера в netbeans 6.9b). На одной формочка для логина, на другой будет кабинет пользователя. Если логин прошел успешно - сцена переключается.

Функции, которые переключают сцены:

Код

var loginScreen : LoginScreen;
var mainScreen : MainScreen;

function goToLoginScr() {
    loginScreen = LoginScreen { client : client };
    currentScene = loginScreen.getDesignScene();
}

function goToMainScr() {
    mainScreen = MainScreen { client : client userName: loginScreen.loginBox.text};
    currentScene = mainScreen.getDesignScene();
}



var currentScene : Scene;


Логин:

Код

protected function processAuthorization(m : ProtocolMessage ) {
        var authMsg : Authorizer.Messages = m.getContent() as Authorizer.Messages;
        if (authMsg == Authorizer.Messages.ALREADY_ONLINE) {
            goToLoginScr();
            loginScreen.statusText.content = "User {loginScreen.loginBox.text} already online";
        } else
        if (authMsg == Authorizer.Messages.AUTHORIZATION_REQUIRED) {
            loginScreen.statusText.content = "{loginScreen.loginBox.text} loginning in...";
            client.send(new ProtocolMessage("authorization", "{loginScreen.loginBox.text}\n{loginScreen.passwordBox.text}"));
        } else
        if (authMsg == Authorizer.Messages.CONNECTION_ACCEPTED) {
            loginScreen.statusText.content = "OK";
            goToMainScr(); //Вот здесь переключаемся на главный экран.
        } else
        if (authMsg == Authorizer.Messages.INVALID_LOGIN_PASS) {
            goToLoginScr();
            loginScreen.statusText.content = "Invalid login or password";
        } else
        if (authMsg == Authorizer.Messages.CONNECTION_REJECTED) {
            goToLoginScr();
            loginScreen.statusText.content = "Connection rejected";
        }
        }


Стэйдж:

Код

stage  = Stage {
        title: "Поле чудес."
        scene: bind currentScene
    }



И все бы хорошо, да вот незадача: с вероятностью ~80% формочка подвисает в рандомном месте. Иногда еще перед переходом на другую сцену (loginScreen.statusText.content = "OK"; здесь). Иногда - как только перешло. Иногда - уже во время работы с новой сценой.
Формочка просто перестает реагировать на любый события и закрыть ее можно только killall -s 9
Если попробовать отладить и после зависания нажать паузу - останавливается неизвестно где, не показывает ни код ни коллстек ни переменные.


--------------------
как корабль назовешь - то на нем и напишешь
PM MAIL WWW ICQ   Вверх
BSOD
Дата 29.4.2010, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 1.11.2004
Где: Гомель

Репутация: нет
Всего: 3



Код

bsod@bsod-laptop:~$ jstack -F 10069
Attaching to process ID 10069, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 16.3-b01
Deadlock Detection:

Found one Java-level deadlock:
=============================

"AWT-EventQueue-0":
  waiting to lock Monitor@0x00007f8b205464c0 (Object@0x00007f8b40b4ae80, a com/sun/scenario/animation/AbstractMasterTimer$MainLoop),
  which is held by "Thread-2"
"Thread-2":
  waiting to lock Monitor@0x00007f8b20545ce0 (Object@0x00007f8b40b4ae70, a java/lang/Object),
  which is held by "AWT-EventQueue-0"

Found a total of 1 deadlock.

И дальше много сообщений вида:

Thread 10074: (state = BLOCKED)
Error occurred during stack walking:
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: get_thread_regs failed for a lwp
   at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.execute(LinuxDebuggerLocal.java:152)
   at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.getThreadIntegerRegisterSet(LinuxDebuggerLocal.java:466)
   at sun.jvm.hotspot.debugger.linux.LinuxThread.getContext(LinuxThread.java:65)
   at sun.jvm.hotspot.runtime.linux_amd64.LinuxAMD64JavaThreadPDAccess.getCurrentFrameGuess(LinuxAMD64JavaThreadPDAccess.java:92)
   at sun.jvm.hotspot.runtime.JavaThread.getCurrentFrameGuess(JavaThread.java:256)
   at sun.jvm.hotspot.runtime.JavaThread.getLastJavaVFrameDbg(JavaThread.java:218)
   at sun.jvm.hotspot.tools.StackTrace.run(StackTrace.java:76)
   at sun.jvm.hotspot.tools.StackTrace.run(StackTrace.java:45)
   at sun.jvm.hotspot.tools.JStack.run(JStack.java:60)
   at sun.jvm.hotspot.tools.Tool.start(Tool.java:221)
   at sun.jvm.hotspot.tools.JStack.main(JStack.java:86)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at sun.tools.jstack.JStack.runJStackTool(JStack.java:118)
   at sun.tools.jstack.JStack.main(JStack.java:84)
Caused by: sun.jvm.hotspot.debugger.DebuggerException: get_thread_regs failed for a lwp
   at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.getThreadIntegerRegisterSet0(Native Method)
   at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.access$800(LinuxDebuggerLocal.java:51)
   at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$1GetThreadIntegerRegisterSetTask.doit(LinuxDebuggerLocal.java:460)
   at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.run(LinuxDebuggerLocal.java:127)



--------------------
как корабль назовешь - то на нем и напишешь
PM MAIL WWW ICQ   Вверх
BSOD
Дата 29.4.2010, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 1.11.2004
Где: Гомель

Репутация: нет
Всего: 3



Все, проблема решена. Если вдруг кому интересно: http://developers.sun.ru/forum/viewtopic.p...mp;p=3044#p3044.


--------------------
как корабль назовешь - то на нем и напишешь
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1527 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.