PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java, Pfad der ausgeführten Datei bestimmen?


medi
2007-08-28, 16:57:36
also "ich" habe das problem, dass eine .java Datei als quasi plugin in ein javaprogramm eingebunden wird. nun möchte "ich" gerne eine txt/xml datei auf die platte legen wo "ich" bestimmte konfigurationen vornehmen kann. jetzt braucht java ja scheinbar ne absolute pfadangabe. gut dachte "ich" mir dann leg ich einfach die datei ins selbe verzeichnis wie "mein" plugin und bestimme dann währent der laufzeit den ort wo das plugin liegt und packe diesen pfad als absoluten pfad vor die datei, die "ich" auslesen will. allerdings bestimmt er "mir" nun den pfad des javaprogramms was aber woanders liegen kann.

jemand ne idee wie man das ganze lösen könnte?


*"ich" und "mir" weil das hauptsächlich meine freundin proggt und ich nur mit rat und tat zur seite stehe ;)

Abnaxos
2007-08-29, 12:39:50
Wenn es sich um reine Meta-Informationen zum Plugin handelt, ist es recht einfach: Du kannst die Datei einfach mit in die Jar-Datei aufnehmen, z.B. unter META-INF/my.domain.plugin.xml (oder META-INF/my/domain/plugin.xml). Danach kannst du dir mit getClass().getClassLoader().getResources("META-INF/my.domain.plugin.xml") eine Enumeration über sämtliche dieser Dateien im Classpath holen und die Dateien einlesen.

Da du die Plugin-Klassen schon zu kennen scheinst, könnte man solche Meta-Informationen auch mit Annotations direkt in die Klasse schreiben und dann via Reflection auslesen.

Wenn der Benutzer die Datei selber ändern können soll, wird's schwieriger. Dann müsstest du schon mit getClass().getProtectionDomain().getLocation() die URL ermitteln, von wo die Klasse geladen wurde und dann davon ausgehend ableiten, wo nun die Datei liegen müsste. Da könnte dir aber durchaus auch der SecurityManager in die Quere kommen, ausserdem kannst du nicht sicher wissen, wie die URL aufgebaut ist.