Eclipse: Export nach .jar UND Include-Ressourcendateien (ANT)

7

Unser Projekt in eclipse zeigt ungefähr die folgenden Ordner:

%Vor%

In unserem Projekt möchten wir Datei & gt; Exportieren ... & gt; Ausführbare JAR

Nun, das funktioniert gut, mit einer Ausnahme: Wenn wir unsere application.jar ausführen wollen, müssen wir den Ordner rsc / am selben Ort wie application.jar kopieren.

In rsc / haben wir andere Ordner für die Trennung der verschiedenen Teile. Grundsätzlich laden wir die Teile mit dem Code (naja ein bisschen verändert, aber der Pfadstil ist korrekt)

%Vor%

Ich könnte rechts auf rsc / & gt; Buildpfad & gt; Verwenden Sie als Quellordner.

Das geht aber auch nicht, weil Eclipse den rsc-Ordner nicht automatisch in den bin / -folder kopiert. Und dann können wir es nicht mehr vom Terminal aus ausführen (nicht in jar verpackt)

BEARBEITEN : Warum kann Eclipse das nicht richtig handhaben? Warum hat es Probleme mit "verschachtelten" Ausgabeordnern? Auf der Registerkarte Source des Dialogfelds Build Path konnte ich problemlos den Ordner rsc / -folder mit dem Ausgabeordner, der auf bin / rsc / gesetzt wurde, hinzufügen, aber anscheinend keine verschachtelten Ordner ...

>

BEARBEITEN 2 : Jetzt konnte ich eine XML-Datei erstellen, um das Zeug mit ant zu bauen, und es gelang mir irgendwie, den rsc-Ordner direkt in das jar zu integrieren. Läuft immer noch nicht wegen der gleichen Fehler. Muss ich wirklich die Ressourcenpfade überprüfen, ob sie in einer JAR sind oder nicht? Der Inhalt der JAR ist nun folgender:

%Vor%

aber Java hasst mich immer noch und wirft java.io.FileNotFoundException: rsc/properties/Constants.properties mit einem Stacktrace von ungefähr 100 Zeilen.

jemand eine Idee, wie es geht? thx & amp; Grüße

    
Atmocreations 15.01.2010, 16:46
quelle

5 Antworten

15

Wenn Sie rsc als Quellordner markieren, kopiert Eclipse seinen Inhalt in das Ausgabeverzeichnis. Oder Sie könnten einfach rsc unter src verschieben, wenn Sie die Ressourcen in der Ausgabe gruppieren möchten.

Dann können Sie Class.getResource("/properties/Constants.properties") oder Class.getResource("/rsc/properties/Constants.properties") verwenden und es funktioniert unabhängig davon, ob Ihre App als jar gepackt ist oder von der Quelle läuft.

Als Nebenbemerkung funktioniert das file: -Protokoll nur mit normalen Dateien, um auf Dateien innerhalb des Jar zuzugreifen, die Sie wie new URL("jar:file:app.jar!/rsc/properties/Constants.properties") verwenden müssten.

    
Dan Berindei 22.01.2010, 10:00
quelle
4

Sie könnten es versuchen: Wechseln Sie im Dialogfeld "Java-Build-Pfad" zur Registerkarte "Bibliotheken" und wählen Sie "Klassenordner hinzufügen ...". Wählen Sie rsc im Dialogfeld Klassenordnerauswahl. Der Inhalt des Verzeichnisses rsc wird jetzt in der ausführbaren JAR-Datei enthalten sein.

(Beachten Sie, dass rsc selbst nicht eingeschlossen wird, daher müssen Sie möglicherweise ein neues Unterverzeichnis unter rsc hinzufügen, um die Verzeichnisstruktur im Jar richtig zu machen.)

    
Ash 16.01.2010 01:30
quelle
2

Für diese Art der Verwendung würde ich Maven empfehlen, was das automatisch beim Erstellen eines Jars tut. Es gibt sogar ein Eclipse-Plugin .

Sie können auch Ant verwenden.

    
Valentin Rocher 15.01.2010 17:08
quelle
1

Ich mache das normalerweise manuell, in Ihrem Fall jar -uf foo.jar rsc das schließt all deine Ressourcen ein. Sie können ein Skript schreiben oder dies in ant tun

    
Frank 18.01.2010 17:32
quelle
1

Wie Sie in Bearbeiten 2 sagen, dass Sie alle in einem Jar haben, sollte dies funktionieren:

%Vor%     
rodrigoap 19.01.2010 21:21
quelle

Tags und Links