Проблема
Сейчас я на полпути к созданию симулятора Game of Life на Java (в Eclipse) с использованием графического интерфейса Swing как части проекта для колледжа.Это происходит удивительно, за исключением одного небольшого недостатка -
. Он работает на моем нетбуке, но не на любом другом ПК, который я пробовал.Это под Ubuntu.
Некоторая структурная схема - у меня есть Модель, Вид и Контроллер.Я еще не определил модель должным образом, но я сделал вид (часть с графическим интерфейсом) и запустил контроллер.Контроллер запускается методом Main, а затем Controller создает класс View в отдельном потоке и входит в цикл while.
Представление реализует очередь «заказов», которые он получил от пользовательского ввода, щелчков мышью, а что нет.Контроллер выбирает эти заказы из очереди на итерации цикла while и выполняет их по мере необходимости.
Однако, хотя код отлично работает на моем нетбуке (последняя версия, Java 1.6.0_20), он не работает на моем ПК (последняя версия Java 1.6.0_20) или на компьютерах колледжа (karmic)., некоторая предыдущая версия Java).Он просто останавливается при попадании в метод getNextCommand. Нет ошибок, просто отказывается печатать / соблюдать
Здесь находятся исходные файлы - http://www.mediafire.com/?dfwtdkj1tdxd5xl Интересующие файлы - Controller и View.
Пример
В View у меня есть эта функция:
public Command getNextCommand() {
System.out.println(commands.getFirst().id);
return commands.pop();
}
Довольно понятно, когда контроллер вызывает getNextCommand (), он печатает, какая это была команда.
Вот цикл while в Controller:
while(!stop) {
if (gui.hasCommand()){
order = gui.getNextCommand();
//System.out.println("Something");
//if(order.id.equals("stop")) { stop = true; }
}
}
Это прекрасно работает.Он печатает в getNextCommand, как и следовало ожидать.
Раскомментируйте хотя бы одно из двух утверждений, и он внезапно перестает работать.Вам больше не нужно печатать!
Почему это случилось?Почему это работает на моем нетбуке, а не на моем ПК?: C
Дополнительные примечания
Кроме того, если я запускаю файлы .class, которые создает Eclipse, он печатает (при условии, что эти две строки закомментированы).Если я просто скомпилирую их, используя javac, ничего не печатается.
Любое понимание будет оценено!
Спасибо,
Люк.
Редактировать
Та же проблема возникает, если вместо возврата команды (простой контейнерный класс с идентификатором (String), x, y (int) и value (int)), когда я вызываю getNextCommand, я возвращаю Integer.Или что-нибудь еще.