Hallo Stack Overflow Freunde. Ich habe ein einfaches Problem, von dem ich befürchte, dass es keine einfache Lösung gibt, und ich brauche einen Rat, wie es weitergehen soll. Ich entwickle eine Java-Anwendung, die als und ausführbare JAR-Datei gepackt wird, aber es erfordert, einige ihrer JAR-Dateiinhalte während der Ausführung zu ändern. Zu diesem Zeitpunkt habe ich ein Problem festgestellt, weil einige Betriebssysteme die Datei sperren, um Schreibvorgänge zu verhindern.Ändern Ausführen Jar Datei
Es ist wichtig, dass der Benutzer eine aktualisierte Version der JAR-Datei bis zum Beenden der Anwendung sieht, obwohl ich ziemlich flexibel sein kann, wie dies zu erreichen ist. Eine saubere und effiziente Lösung ist offensichtlich vorzuziehen, aber Portabilität ist die einzige harte Anforderung.
Die folgenden drei Ansätze, die ich sehen kann, um das Problem zu lösen, fühlen sich frei, sie zu kommentieren oder andere zu empfehlen.
- Java Sagen Sie die JAR-Datei für das Schreiben (dies scheint nicht möglich, aber es wäre die easyest Lösung)
- Kopieren Sie die ausführbaren Klassendateien auf eine tempory Datei auf Start der Anwendung zu entsperren, einen Class-Loader verwenden zu laden Diese Dateien und entlädt diejenigen aus der ursprünglichen JAR-Datei. (Nicht viel Erfahrung mit den Klassenlatern, aber hoffentlich wäre die JVM dann schlau genug, um zu erkennen, dass die ursprüngliche JAR nicht mehr in Benutzung ist und sie entsperrt)
- Setzen Sie eine Sekunde ausführbare JAR-Datei in der ersten, beim Start extrahieren Sie die innere jar zu e temporären Datei, rufen Sie einen neuen Java-Prozess mit dem kopierten inneren JAR und übergeben Sie den Speicherort der Outer JAR, ersten Prozess Ausfahrten, modifys zweiter Prozess der Outer jar unincumbered. (Dies funktioniert, aber ich ist eine Plattform unabhängige Weise von einer Java-Anwendung aufgerufen wird eine andere nicht sicher, es ist)
Ich weiß, dass dies eine seltsame Frage ist, würde aber jede Hilfe dankbar sein .
Können Sie angeben, warum Sie die JAR-Datei während der Ausführung ändern müssen? – Poindexter
@pinkynobrain du denkst die alte Schule ant Weg, ich schlage vor, Sie lesen Maven von Beispiel kostenlos Ebook, Sie werden sehen, dass was Sie vorschlagen, macht keinen Sinn .. Ich versuche nicht zu beleidigen Sie nur versuchen, Ihnen zu helfen .. sind wir nicht alle dort gewesen – ant
Was versuchen Sie zu erreichen - eine sich selbst aktualisierende Anwendung? –