Hi!
Ich arbeite gerade an einem Plugin-System für eine von mir entwickelte Server-Application. Das Plugin besteht aus einer Zip Datei, in der sich zwei Unterverzeichnisse (classes, config) befinden. Das Verzeichniss "classes" enthält die class-Dateien für das Plugin ("config" enthält eine Java-Properties-Datei mit zusätzlichen Informationen).
Ich hab zwei Ansätze dafür gefunden:
Der erste basiert auf dem URLClassloader. Ich übergebe ihm den Pfad zu der Zip/Jar und er lädt die Klasse, ohne irgendwelche Probleme. Dummerweise nicht, wenn sie dich in einem Unterverzeichniss befindet!
Ansatz Nummer zwei bestand darin, mir mittels java.util.zip.ZipFile alle ZipEntry des Archives nach den beiden Dateien durchsuchen zu lassen und einen InputStream zu diesen zu öffnen (ne andere Möglickeit als diese hab ich leider nicht gefunden). Bei der Properties-Datei klappt alles problemlos, da sie den Stream als Argument übernehmen kann. Für die Klasse brauch ich zwangsweise ne URL, da ich keine Möglichkeit kenne, dem URLClassloader einen Stream zu übergeben.
Mein Problem besteht also im wesentlichen darin, dass ich eine Klasse aus dem >>Unterverzeichniss<< eines Archiv zu laden, ohne dieses zu entpacken. Hat jemand eine Idee, die mir weiterhelfen könnte?
Grüße,
Jey
Ich arbeite gerade an einem Plugin-System für eine von mir entwickelte Server-Application. Das Plugin besteht aus einer Zip Datei, in der sich zwei Unterverzeichnisse (classes, config) befinden. Das Verzeichniss "classes" enthält die class-Dateien für das Plugin ("config" enthält eine Java-Properties-Datei mit zusätzlichen Informationen).
Ich hab zwei Ansätze dafür gefunden:
Der erste basiert auf dem URLClassloader. Ich übergebe ihm den Pfad zu der Zip/Jar und er lädt die Klasse, ohne irgendwelche Probleme. Dummerweise nicht, wenn sie dich in einem Unterverzeichniss befindet!
Ansatz Nummer zwei bestand darin, mir mittels java.util.zip.ZipFile alle ZipEntry des Archives nach den beiden Dateien durchsuchen zu lassen und einen InputStream zu diesen zu öffnen (ne andere Möglickeit als diese hab ich leider nicht gefunden). Bei der Properties-Datei klappt alles problemlos, da sie den Stream als Argument übernehmen kann. Für die Klasse brauch ich zwangsweise ne URL, da ich keine Möglichkeit kenne, dem URLClassloader einen Stream zu übergeben.
Mein Problem besteht also im wesentlichen darin, dass ich eine Klasse aus dem >>Unterverzeichniss<< eines Archiv zu laden, ohne dieses zu entpacken. Hat jemand eine Idee, die mir weiterhelfen könnte?
Grüße,
Jey