# Launch4j: eventuell Klassenpfad Probleme



## Tob (28. Jan 2010)

Unsere Java Software wird als exe Datei ausgeliefert und dazu nutzen wir Launch4j, da andere Wrapper die es gibt, immer irgendwas nicht konnten oder bugged sind. 
jetzt hat sich herrausgestellt, dass über die Kommandozeile die exe Datei nicht richtig aufrufbar ist und zwar dann, wenn man aus einem anderen Verzeichnis das Programm aufruft:
D:\>c:\Programme\Programm\Programm.exe

würde man erst in das Verzeichnis c:\Programme\Programm\ per Hand wechseln, klappt es. Ich vermute es liegt daran, dass die JAR-Datei nicht gewrapped ist. Dies geht aber nicht, da dann ein interner Classloader nicht mehr geht. Kennt jemand dies Problem?

Denn aus diesem Grund funktionieren anscheinend auch unsere Verknüpften Dateien nicht richtig.


----------



## Guybrush Threepwood (28. Jan 2010)

Das ist eigentlich kein spezielles Problem von launch4j, sondern tritt immer auf, wenn das Arbeitsverzeichnis falsch gesetzt ist. Das kann z. B. auch sein, wenn bei einer Verknüpfung auf dem Desktop der Ort der auszuführenden Datei und das Arbeitsverzeichnis voneinander abweichen. Es werden dann logischerweise die Ressourcen nicht gefunden, da diese in einem anderen Verzeichnis liegen. Spricht etwas dagegen, in das Verzeichnis mit dem Programm zu wechseln und dort zu starten?


----------



## Tob (28. Jan 2010)

beim Start von der Konsole könnte man natürlich wechseln, was aber etwas unschön ist, da jeder Nutzer sein Lieblingsverhalten hat.

Problematischer sind die Verknüpfungen. Es werden in Windows mehrere Dateitypen mit dem Programm verknüpft, um direkt aus einem Browser oder Windows Explorer das Programm mit der Datei zu öffnen. Ich denke dies Problem könnte eventuell zwar mit einer Verbesserung des Installers (also irgendwie das korrekte Arbeitsverzeichnis bei der Verknüpfung mit angeben) zu lösen sein, aber wenn ich es mit Launch4j schon hinbekomme, wäre es super.
Wenn ich mich nicht täusche, hatte dies Funktioniert solange wir JSmooth eingesetzt hatten. Leider gibt es hier in besonderen Kombinationen von Betriebssystem/JavaUmgebung oder sonstwas Probleme bei der Angabe des zu reservierenden Arbeitsspeichers.


----------



## Guybrush Threepwood (28. Jan 2010)

Ich verwende für die Generierung des Installers NSIS (launch4j ist ja lediglich ein Wrapper, kein Installer). Dort muss man lediglich das aktuelle Verzeichnis auf das Installationsverzeichnis setzen, Bevor man die Verknüpfungen generiert. Das Arbeitsverzeichnis ist dann automatisch korrekt gesetzt. Bei den Verknüpfungen von Dateien mit einem Programm via Registry geht es prinzipiell auch. Das habe ich schon mal gemacht, aber es ist leider zu lange her, als dass ich mich daran genau erinnere. So etwas geht aber definitv ebenfalls mit NSIS.

Übrigens: Bei JSmooth dürfte es eigentlich nicht anders gewesen sein.

P.S.: Die Installer lassen sich ohne große Vorkenntnisse mit EclipseNSIS erstellen.


----------



## Tob (28. Jan 2010)

NSIS nutze ich auch für den Installer. Wobei ich mich noch nie intensiv mit beschäftigt habe, da ich dafür die meisten Scripts einfach vom Vorgänger übernommen habe. Gut zu wissen das es geht, dann werde ich mir NSIS morgen mal genauer ansehen. Denn mit Launch4j komme ich trotz weiterem herumspielen nicht weiter.


----------

