Absoluter Pfad zu *.jar datei!

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo!

Habe zwei kleine Probleme!

1)
Habe ein kleine Programm geschrieben, dass eine Konfigurationsdatei benötigt! Diese Konfigurationsdatei sollte sich jetzt natürlich außerhalb meines jar files befinden!

Das jar file liegt z. b. im Ordner "C:\Programme\Test\"
Gibts irgend eine Möglichkeit den Absoluten Pfad zum *.jar File aus der laufenden Anwendung auszulesen? Wenn ja, wie?

2)
Möchte ich gerne externe *.jar files in meine Anwendung einbinden! Bis jetzt habe ich das immer so gelöst, dass ich die jar files entpackt habe und die Ordnerstruktur einfach in mein jar file kopiert habe! Gibts da keine möglichkeit komplette *.jar files einzubinden? Wenn ja wie? Funktioniert das irgendwie mit ANT?

Danke für eure Hilfe
 
Hi,

Anonymous hat gesagt.:
Habe ein kleine Programm geschrieben, dass eine Konfigurationsdatei benötigt! Diese Konfigurationsdatei sollte sich jetzt natürlich außerhalb meines jar files befinden!
Das hört sich schon einmal vernünftig an.

Anonymous hat gesagt.:
Das jar file liegt z. b. im Ordner "C:\Programme\Test\"
Gibts irgend eine Möglichkeit den Absoluten Pfad zum *.jar File aus der laufenden Anwendung auszulesen? Wenn ja, wie?
Eine ähnliche Möglichkeit gibt es, aber es ist doch die Frage, ob Du das überhaupt möchtest. 🙂 Vielmehr ist es doch für Dich von Interesse (wenn ich Dich richtig verstanden habe) zu wissen, wo die Konfigurationsdatei liegt. Um dies nicht erfragen oder suchen zu müssen, kannst Du sie beispielweise immer im Userhome das Benutzers ablegen, welches Du mit System.getProperty("user.home") erfragen kannst. Einstellungsdateien im Userhome abzulegen ist eine gängige Praxis.

Anonymous hat gesagt.:
2) Möchte ich gerne externe *.jar files in meine Anwendung einbinden! Bis jetzt habe ich das immer so gelöst, dass ich die jar files entpackt habe und die Ordnerstruktur einfach in mein jar file kopiert habe! Gibts da keine möglichkeit komplette *.jar files einzubinden? Wenn ja wie? Funktioniert das irgendwie mit ANT?

Falls Dir eine Art PlugIn-System vorschwebt solltest Du Dir mal die Klasse 'java.net.URLClassLoader' der JavaAPI angucken. Die kann man sehr schön zum dynamischen nachladen von Klassen in einem JAR verwenden.


Hoffe, ich konnte helfen.
 
Also dein erstes Problem ist mir nicht ganz klar. Warum brauchst du den Pfad zum .jar? Leg die Konfigurationsdatei einfach in einen eigenen Ordner der conf heißt. Dann kannst du die Datei relativ im Programm ansprechen:
Code:
  File configFile = new File("conf", "myapp.properties");

Natürlich kannst du Bibliotheken in ant einbinden. Das schaut dann ca. so aus:

Code:
<property name="javalib.dir" value="C:/javalibs" />
<property name="src.dir" value="${basedir}/src" />
<property name="classes.dir" value="${basedir}/classes" />
<property name="lib.dir" value="${basedir}/lib" />

<property name="commons-logging.home"
	          value="${javalib.dir}/commons-logging/1.1" />

<path id="commons-logging.classpath">
		<fileset dir="${commons-logging.home}">
			<include name="commons-logging-1.1.jar" />
		</fileset>
</path>

<target name="prepare">
		<mkdir dir="${classes.dir}" />
		<mkdir dir="${lib.dir}" />
</target>

<target name="clean">
		<delete dir="${classes.dir}" failonerror="false" />
		<delete dir="${lib}" failonerror="false" />
</target>

<target name="compile" depends="prepare">
		<javac srcdir="${src.dir}" destdir="${classes.dir}">
			<classpath refid="commons-logging.classpath" />
		</javac>
</target>
 
Niki hat gesagt.:
Also dein erstes Problem ist mir nicht ganz klar. Warum brauchst du den Pfad zum .jar? Leg die Konfigurationsdatei einfach in einen eigenen Ordner der conf heißt. Dann kannst du die Datei relativ im Programm ansprechen:
Code:
  File configFile = new File("conf", "myapp.properties");
Dann wird nach conf relativ zum aktuellen Verzeichnis gesucht. Das muss nicht unbedingt dort sein, wo das Programm liegt.
Für Settings würde ich den Java Preference Store verwenden.
 
Hi!

Habs jetzt etwas anders gelöst! Suche mir mit:

MainFrame.class.getProtectionDomain().getCodeSource().getLocation().getPath();

Den absoluten Pfad zu meinem *.jar file und hänge dann einfach meine benötigten ordner an den Pfad an! Funktioniert eigentlich einwandfrei!

Danke für eure Hilfe!
 
moien,

inkognito: an sich finde ich das recht gut, nur müsste ich dazu dann ja auch immer den dateinamen abschneiden, weil ich den nicht brauche. auch bei leerzeichen oder sonderzeichen (üöä etc) im pfadnamen wird das ja auch schwer. kann mir dazu jemand einen tipp geben für solche fälle? grüße, Andreas
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben