dll löschen trotz zugriff durch java programm

  • Themenstarter Themenstarter Xnor
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
X

Xnor

Gast
Wenn ich mein Java (*.jar) Programm starte wird aus der jar eine dll entpackt.
Wenn ich mein Programm beende wird diese wieder gelöscht.

Greift mein Programm aber während des Betriebs auf diese dll zu, kann diese beim Beenden nicht gelöscht werden. (benutze WindowClosing Event, mit WindowClosed klappt das irgendwie nicht).

es handelt sich um die jnpout32pkg.dll um ein LPT Port anzusprechen.

Kann ich irgendwie vor dem Beenden den Zugriff auf die dll lösen und diese dann löschen, bzw nach vollständigem Beenden des Programms die dll löschen?

Der Zugriff wird durch folgenden Quellcode ausgelöst.

Java:
lpt = new pPort();
        addr = Short.decode(PortGroup.getSelection().getActionCommand());

        datum = (short) zahl;
        jLabel1.setText(String.valueOf(addr));
        jLabel2.setText(String.valueOf(datum));

        lpt.output(addr, datum);

pPort ist eine der zwei Klassen der dll.
 
Geht so einfach nicht, da dlls nicht entladen werden können. Der Prozess muss also erst enden bevor das Lock auf der Datei verschwindet. Du hast 3 Möglichkeiten:
-Verwende ein OSGi Framework, dann musst du die dll gar nicht erst kopieren und löschen
-Verwende einen Launcher um dein Programm als separaten Prozess zu starten und lass den launcher aufräumen wenn dein Programm beendet wurde
-Starte beim beenden einen neuen Prozess der die Aufräumarbeit erledigt sobald dein Programm beendet ist
 
Danke für die Antwort,

hab schon befürchtet, dass ich dies über ein extra Programm regeln muss.

Kurze frage noch, ist dies mit einer jar möglich (die Vorhandene), wie könnte so etwas aussehen?

MfG Xnor
 
unter Launcher verstehe ich jetzt ein extra Programm der dann meine jar aufruft.
und dazu ist meine frage ob man den Launcher dann so realisieren kann, das dieser meine jar enthält (jar in jar) und aufruft.

bzw kann im Vorhandenen Java Programm nach dem Beenden ein Prozess erzeugen und ausführen lassen?

bin in Java nicht so fit und kenn die Möglichkeiten nicht.

Will das mit dem seperaten Prozess irgendwie mit meinem Vorhandenen Java Programm so regeln, dass ich kein extra Datei brauche.

MfG Xnor
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben