Witajcie przepełnieni znajomi. Mam prosty problem, który obawiam się, że nie ma prostego rozwiązania i potrzebuję porady, jak postępować. Zajmuję się tworzeniem aplikacji java pakowanej jako plik wykonywalny JAR, ale wymaga ona modyfikacji niektórych jej zawartości pliku JAR podczas wykonywania. Na tym etapie mam problem, ponieważ niektóre systemy operacyjne blokują plik zapobiegający zapisywaniu.Zmodyfikuj wykonywanie pliku JAR
Ważne jest, aby użytkownik zobaczył zaktualizowaną wersję pliku JAR, zanim aplikacja wyjdzie, chociaż mogę być dość elastyczny, jeśli chodzi o sposób jego osiągnięcia. Oczywiste jest, że czyste i efektywne rozwiązanie jest preferowane, ale przenośność jest jedynym trudnym wymaganiem.
Poniżej przedstawiono trzy podejścia, które mogę rozwiązać, aby je skomentować lub zaproponować innym.
- Powiedz Java, aby odblokować plik JAR na piśmie (to robi wydaje się możliwe, ale byłoby easyest rozwiązanie)
- skopiować pliki wykonywalne klasy do pliku tempory na starcie aplikacji, należy użyć programu ładującego klasy do załadowania te pliki i wyładowują te z początkowego pliku JAR. (Nie miał zbyt dużego doświadczenia z programami ładującymi klasy, ale mam nadzieję, że JVM byłaby wtedy wystarczająco inteligentna, by zdać sobie sprawę, że oryginalny JAR jest nieużywany i tak go odblokować)
- Po drugie plik wykonywalny JAR wewnątrz pierwszej, przy uruchomieniu wyodrębnij wewnętrzny plik jar do pliku tymczasowego, wywołaj nowy proces Java za pomocą skopiowanego wewnętrznego pliku JAR i przekaż mu lokalizację zewnętrznego pliku JAR, pierwszy proces wyjścia, drugi proces modifys Outer słoik unincumbered. (To będzie działać, ale nie jestem pewien, że jest to sposób platforma niezależna od jedna aplikacja Java powołując inny)
Wiem, że to dziwne pytanie, ale każda pomoc będzie mile widziane .
Czy można podać jakiekolwiek wskazówki, dlaczego należy modyfikować plik jar podczas wykonywania? – Poindexter
@pinkynobrain masz na myśli sposób antycznej mrówki, proponuję przeczytać maven przykładowy darmowy ebook, zobaczysz, że to, co sugerujesz, nie ma sensu .. Nie próbuję cię urazić, tylko próbuję ci pomóc .. czy nie wszyscy już tam byliśmy – ant
Co próbujesz osiągnąć - aplikacja samoaktualizująca się? –