Поддельный экземпляр более старой версии моего Java-приложения, работающего в фоновом режиме? - PullRequest
0 голосов
/ 28 сентября 2010

Я новичок в Java (из C ++ / .NET) и вижу очень странную ошибку.Я разрабатываю w / Eclipse IDE для Windows XP на своем локальном компьютере.Кажется, что по какой-то причине более старый (и, конечно, ошибочный) экземпляр моего приложения продолжает работать по какой-то очень странной причине, которую я не могу понять.

Даже когда я закрываю Eclipse, эта старая версия моего приложенияработает в фоновом режиме.Поэтому, если я не перезагружаюсь, когда я пытаюсь протестировать новую версию кода, этот «старый, мошеннический экземпляр» борется за ресурсы, которые используются (файлы в общем ресурсе) с более новой (надеюсь, менее ошибочной) версией кода.

Кто-нибудь испытывал это?Кэширует ли JVM старые версии вашего Java-приложения по какой-то причине?Что мне здесь не хватает?Когда я перезагружаю свою машину, экземпляр, наконец, умирает ...

Я рвал на себе волосы, пытаясь выяснить, почему в новой версии моего кода все еще была та же старая ошибка, пока я не понял, что это происходит ... пожимает плечами

Спасибо за любую помощь!

Ответы [ 4 ]

1 голос
/ 14 января 2011

У меня тоже была такая проблема. Я попытался бы запустить программу после внесения изменений, и она запустит старую версию, и все равно сообщит об ошибках и остановится на строках, которые я даже закомментировал. Я пробовал решение micdah , но в диспетчере задач не было процессов java.exe . Я решил проблему, убив процесс Eclipse из диспетчера задач, который закрыл программу без сохранения настроек Eclipse Workspace . При повторном запуске все, что я сохранил в файлах .java , запускалось нормально.

1 голос
/ 02 октября 2010

Случайно ли вы запускали свою программу несколько раз или забыли закрыть один ее экземпляр перед повторным запуском из Eclipse?

Одна вещь, которая не очень очевидна при использовании Eclipse, заключается в том, что он позволяет запускать любое количество экземпляров программ Java одновременно. Когда у вас активен вид консоли, у вас есть возможность прервать последний запуск.

Чтобы переключить консоль на другой запуск (если есть несколько запущенных), вы можете выбрать из списка, нажав значок «Показать выбранную консоль», который является значком монитора в правом верхнем углу в представлении консоли. Вы также можете удалить все и все завершенные выходы консоли запуска из представления консоли, нажав «Удалить все завершенные запуски», если каждый запуск был прерван, теперь должно отображаться «Нет консолей для отображения в это время», в противном случае - следующая новее запущенный запуск будет доведен до вершины.

Если это не проблема, и, действительно, Eclipse потерял отслеживание запуска (что довольно редко, но может случиться - особенно если вы сами запускаете подпроцессы), вы можете безопасно прекратить любой run-amock java.exe процесс из диспетчера задач, поскольку Eclipse запускается в оболочке исполняемого файла Windows на платформе Windows.

1 голос
/ 28 сентября 2010

Java-приложения запускаются под "java.exe", так что вы можете найти это в списке задач.К сожалению, если несколько приложений Java работают одновременно, трудно сказать, какой именно.

Я не очень знаком с Eclipse, но похоже, что Eclipse должен сказать вашей старой версии прекратить работу, когда вызакройте Затмение.JVM не кэширует прошлые версии.

Надеюсь, это поможет.

0 голосов
/ 28 сентября 2010

Может быть ошибка в Eclipse. Может быть какой-то код в вашем приложении, который порождает новый процесс. Отсюда невозможно сказать.

Если вы еще этого не сделали, проверьте инструмент jps , который входит в состав обычного JDK. Это может облегчить диагностику проблемы.

...