Eclipse Jar File innerhalb meines Runnable Jar-Files nutzen

ortauq

Aktives Mitglied
Hallo zusammen,

Ich habe ein folgende Frage:
Ich würde gerne eine Resource nutzen. Bei dieser Resource handelt es sich um ein Jar-File.
Dies funktioniert auch.

Nun würde ich gerne meine Anwendung, welche diese Resource nutzt, ebenfalls in ein Jar-File packen.


Nun ist meine Frage folgende:

Wie muss ich die Resource zu meinem Projekt hinzufügen,
sodass Sie von meinem ausführendem Programm,
als auch innerhalb von Eclipse auf die gleiche Weise genutzt werden kann?
Damit meine ich: Ich muss keine Source-Code-Änderung durchführen, weil ich ein Jar-File erstelle.

Weiters würde ich gerne wissen, wie ich nun Zugriff auf die richtig hinzugefügte Resource bekomme.
Ich weiß wie ich mit meiner Jar-Resource umzugehen hätte, weiß jedoch nicht, wie ich Zugriff darauf bekomme.
Also: Wie erhalte ich mein "JarFile"-Objekt meiner Jar-Resource.
 
Wenn du eine JAR in deiner zu erstellenden JAR haben willst, musst du sie nur als external JAR angeben und beim exportieren in Eclipse für das Library handling [c]Package required libraries into generated JAR[/c] setzen.
Dann wird diese einfach eingefügt.
 
Wie verhält es sich, wenn ich eine "normale" jar erstellen möchte. Also keine runnable jar.
Denn ich würde das Jar-File gerne als library nutzen.

Zugriff auf meine Resource besorge ich mir in meiner Anwendung/Bibliothek mittels

Code:
URL jarUrl = getClass().getResource("/resource.jar");


Erzeuge ich nun eine runnable Jar funktioniert alles einwandfrei.
Erzeuge ich eine Bibliotheks-Jar, dann findet er die Resource nicht mehr.
In meiner erzeugten Jar-Bibliothek, ist mein Resource-Jar-File jedoch vorhanden.


Ist getResource vielleicht die falsche Methode? Oder darf ich den Pfad so nicht angeben? Ich bin ratlos.
 
Hat leider nicht funktioniert.
Aber vielleicht kann mir ja jemand anders helfen. Oder du, nur später ;-)

Ich bin echt für jede Hilfe dankbar!
 
Da das JAR File innerhalb deiner JAR liegt, können ja alle Klassen bereits verwendet werden.
Auch die Resourcen darin sollten verwendbar sein.

Deshalb frage ich mich was genau du innerhalb der inneren JAR nicht verwenden kannst.
 
Da das JAR File innerhalb deiner JAR liegt, können ja alle Klassen bereits verwendet werden.
Auch die Resourcen darin sollten verwendbar sein.

Deshalb frage ich mich was genau du innerhalb der inneren JAR nicht verwenden kannst.

Ich kann das Resource-Jar-File selbst nicht verwenden.
Mein Pfad funktioniert nur, wenn ich keine Jar-Bibliothek erzeuge.
 
Naja...ich verstehe trotzdem nicht für das du das Jarfile selbst brauchst.

also
Du hast eine externe Library als Jar.
Diese bindest du in dein Projekt ein als externe Jar.
Jetzt erstellst du aus diesem Projekt eine neue Library.
Und wenn du in einem neuen Projekt diese Library als externe Library anhängst, kannst du nicht mehr auf die erste externe Jar zugreifen.

Hab ich zumindest das richtig verstanden?


Startest du das ganze in Eclipse oder in der Console?
 
Naja...ich verstehe trotzdem nicht für das du das Jarfile selbst brauchst.

also
Du hast eine externe Library als Jar.
Diese bindest du in dein Projekt ein als externe Jar.
Jetzt erstellst du aus diesem Projekt eine neue Library.
Und wenn du in einem neuen Projekt diese Library als externe Library anhängst, kannst du nicht mehr auf die erste externe Jar zugreifen.

Hab ich zumindest das richtig verstanden?


Startest du das ganze in Eclipse oder in der Console?

fast.

die erzeugte library nutzt die resorce-jar.
In meiner neuen anwendung nutze ich die erzeugte library.
Wenn die library die resource nicht nutzen kann, hat es auch keinen sinn, dass ich die library nutze,
denn die resource ist essentiell wichtig für meine library.
 
Vill benutzt du dann die falsche Klasse, um auf die Resource zuzugreifen.

Benutze immer eine Klasse aus der Jar, die die Resource enthält.

Also z.B.


Library.jar
-MainClass.class
-Resource.xml
-Library.jar
-MainClassLib.class
-Resource1.xml
-Library.jar
-MainClassLib2.class
-Resource2.xml

Wenn du je die Resource zugreifen willst, dann verwendest du getClass.getResource(...
Wenn du auf die Resoucre1 zugreifen willst, verwendest du MainClassLib.class.getResource(...
Und bei der Resource2 solltest du MainClassLib2.class.getResource(... verwenden.

Wie ich dir anders helfen kann weiß ich leider nicht, da ich nicht verstehe was du genau wo verwenden willst.
 
Ich nutze jetzt einfach zwei getrennte Jar-Files.
Alles andere schien nicht zu funktionieren.
Um alle Funktionen der einen Jar-Datei zu nutzen, muss eben auch die andere Jar-Datei als Resource einbinden.
Was solls ^^
 
Also ich lade Resourcen immer so 8 :rtfm:
Java:
ResourceLoader.class.getResource(AsStream)( "Pfad" )
 

Zurück
Oben