Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
eine (PC) Anwendung auf Windows liest/lädt .jar und .dll Dateien aus einem Serververzeichnis,
dabei bleiben FileLinks wohl offen solange eine Instanz der Anwendung irgendwo läuft.
Gibt es keine Möglichkeit diese Links zu lösen und nur "bei Bedarf" wieder neu zu verknüpfen?
Oder wären dadurch größere Nachteile zu erwarten (Programmier- oder Laufzeit-Probleme)?
Hintergrund der Frage: Bei vielen Anwendern in einer komplexen Umgebung sind Wartungsarbeiten
wie z.B. schnelle Patcheinspielungen praktisch nicht durchführbar (erschwert durch ein Excel Add-in).
Was meinst du mit FileLinks? Klingt erstmal nach irgendeinem (File)InputStream oder so, der nicht richtig geschlossen wurde. Eine DLL, die mit loadLibrary o.ä. geladen wurde, bekommt man unter Windows aber praktisch nicht mehr weg: Die VM krallt sich diese DLL, und läßt sie ums verrecken nicht mehr los (irgendwelche Workarounds gibt's da vielleicht, aber ich hatte AFAIR sogar mal einen ShutdownHook ausprobiert und selbst der hat's nicht geschafft...)
Eine DLL, die mit loadLibrary o.ä. geladen wurde, bekommt man unter Windows aber praktisch nicht mehr weg: Die VM krallt sich diese DLL, und läßt sie ums verrecken nicht mehr los (irgendwelche Workarounds gibt's da vielleicht, aber ich hatte AFAIR sogar mal einen ShutdownHook ausprobiert und selbst der hat's nicht geschafft...)
Genau so noch nicht. Ist auch nicht direkt nahe liegend: finalize an sich ist ja schon eine Krankheit, die manuell per Reflection aufzurufen sieht schon sehr "verzweifelt" aus aber solche Sachen sind wohl offenbar notwendig, und wenn es geht, ist es wohl einen Versuch wert. Bei JOCL hatte ich natürlich auch mit einer temporären Datei und file.deleteOnExit() rumgespielt, bis mir mal jemand gesagt hat, dass in seinem temp-Verzeichnis hunderte ungelöschte JOCL-DLLs liegen Das hatte ich dann so gelöst, dass eine Datei (mit Versionsnummer im Namen) im temp-Ordner angelegt wird, die dann nicht wieder gelöscht wird, und das schien mir zumindest vertretbar...
[/ot]
[ot]Ja, diese semipermanente Variante ist imho auch ganz günstig. Die obrige Variante funktioniert ja eh nur, wenn die Anwendung sauber durchläuft. Wenn aber jemand eine Anwendung entwickelt ist das aber wohl nicht immer der Fall. [/ot]
[ot]Da hätte ich spontan nicht direkt dran gedacht, aber eine andere Lösung, als ein explizites "cleanup" von der main aus aufrufen zu müssen, müßte man sich für eine Lib ohnehin ausdenken. Ich denke, die aktuelle Lösung ist OK, aber fand die fehlende Möglichkeit, "hinter sich aufzuräumen" schon irritierend (wenn man nicht schon die fehlende Möglichkeit, eine DLL direkt aus einer JAR zu laden, irritierend finden sollte... :reflect: )[/ot]