При распространении приложения Java другим пользователям его можно развернуть как файл JAR для удобства выполнения. Но есть ли способ изменить класс Java/часть кода после развертывания без повторного возврата всего приложения? Если у вас есть приложение с 10 классами, где 9 завершены, но нужно настроить в соответствии с индивидуальным случаем. Каким будет самый простой способ изменить только один класс в приложении?Изменение кода Java после развертывания
ответ
Возможно, вы хотите использовать java web start. Если ваш пользователь запускает приложение через веб-запуск java, он автоматически обновляется, если доступны обновления.
EDIT Он не обеспечивает детализацию на основе классов, но я считаю, что это не настоящая проблема. Однако он обеспечивает детализацию на основе jar, т. Е. Более новая версия jar загружается только в том случае, если она была изменена.
Серверы приложений Java EE, которые я использую, будут только горячим повторным развертыванием столько раз, прежде чем получить ошибку из памяти. Лучше переупаковать, на мой взгляд. – duffymo
@duffymo, я согласен с вами. Однако я не думаю, что OP * действительно * хочет иметь возможность перезагрузить один конкретный класс. ИМХО это был просто пример. – AlexR
Фактически, в моем случае это действительно обновление одного конкретного класса в зависимости от случая. – neza
Нет, нет.
Вы должны переупаковать или разработать тот, который должен быть настроен для настройки во время выполнения. Если вы можете изменить его, используя базу данных конфигурации и фабрику, которая будет единственным способом сделать это без переупаковки.
В теории можно создать еще один jar
для индивидуальных классов и поместить его в пути к классам перед тем старой банки, и JVM будет загружать настроенные классы. Но это просто ищет проблемы ...
Лучше построить две банки, один с не меняющимися классами, а другой с настраиваемыми классами и перестроить позже, когда вам это нужно.
JVM не собирается автоматически обновлять обновленные классы. Как только класс загружается загрузчиком классов, он должен оставаться до тех пор, пока не будет выгружен каким-либо механизмом. Внесение новой копии того же класса в другую банку не поможет. – Gimby
Нет, нет. Вы должны переупаковать. – duffymo
как сайт обновления eclipse? – ergonaut
Это звучит так же, как «Мне нужны перезаряжаемые модули». Что является территорией OSGi. – Gimby