Buduję system aktualizacji, w którym muszę mieć możliwość zastąpienia słoika przywoływanego działającego słoika aplikacji w czasie wykonywania. Jednak próbuję uruchomić funkcje plików na słoiku, takie jak "setLastModified".Zamiana uruchomionego słoika w czasie wykonywania
Po pewnym googling znalazłem ten fragment ...
Co znalazłem w moich badań jest to, że średnia ClassLoader realizacji nigdy zamyka słoiku pliku po jego otwarciu. Również ładuje zasoby tylko z pliku JAR w razie potrzeby. Tak więc w danym czasie mogą być Klasy w pliku JAR , które nie zostały załadowane do pamięci. Oczywiście, jeśli usuniesz plik JAR z klasy ClassLoader, a ono spróbuje znaleźć zasób w brakującym pliku , otrzymasz co najmniej jeden wyjątek IOException.
Czy ktoś ma jakieś odniesienia do informacji na ten temat lub dookoła tego problemu?
Dzięki.
Czy chcesz ponownie wynaleźć koło? OSGi ma już dobre wdrożenie. Zobacz, czy możesz zamiast tego użyć tego. – SteveD
OSGi brzmi jak przytłaczająca dla większości wymagań, spójrz na tę odpowiedź http://stackoverflow.com/a/2463978/320594 –
Po ponownym przeczytaniu wydaje się, że chcesz zachować swoją aplikację uruchomiony, ale z nowymi słoikami ... więc OSGi naprawdę wygląda na dobre rozwiązanie :), na przykład Eclipse pozwala na to (przeładowanie wtyczek podczas działania) i używa OSGi do tego (o ile wiem). –