2016-09-03 2 views
0

Ich habe eine Java Swing-Anwendung erstellt und alles scheint gut zu funktionieren, bis ich es versuche und verteile. Ich benutze eine HMTL-Datei (die sich im Projektstamm befindet), aber beim Erzeugen der endgültigen .jar für das Projekt kann diese Datei (zusammen mit den Bilddokumenten in verschiedenen <src> Tags) nicht gefunden werden, wie die aktuelle Arbeitsverzeichnis hat sich von der Wurzel zu root/dist geändert.Wo fügen Sie Dateien in NetBeans (8.1) hinzu

Gibt es eine korrekte Möglichkeit, Dateien (z. B. .html) in das Projekt einzufügen, damit sie in die .jar-Datei aufgenommen werden können?

+2

Siehe die angegebenen Beispiele [hier] (http://stackoverflow.com/tags/embedded-resource/info) im Tag [tag: embedded-resource]. – trashgod

+0

* "eine HMTL-Datei (die sich im Projektstammverzeichnis befindet)" * Zuerst sollten Sie überprüfen, ob die HTML-Datei im Jar enthalten war. Befolgen Sie dann den Rat von @trashgod, um eine URL zu erhalten und sie zu laden. –

Antwort

0

Ja, es gibt solche Möglichkeiten.

Für eingebettete Dateien:

Sie sie in Ihrem NetBeans-Projekt-Pakete setzen würde und erhalten ihre Lage durch this.getClass() getResource (String path) .getPath() Welche ist eine Zeichenfolge, die können. als Parameter übergeben werden, um ein File-Objekt zu erstellen. (wenn Sie den Pfad angeben, müssen Sie mit einem beginnen/welche von der Wurzel bedeutet. Eg Paket animal.dog husky.txt hat, würden Sie den Pfad /animal/dog/husky.txt verwenden)

Für externe Dateien :

Sie würden etwas wie your_class.class.getProtectionDomain() verwenden. GetCodeSource(). GetLocation(). GetPath(); Um den Ort zu erhalten, an dem die .jar läuft.

+1

* ".. getResource (String path) Und benutze das, um den Dateipfad zu erhalten, der in einem File-Objekt verwendet werden kann." * Es ist kein 'File'-Pfad und kann nicht als' File' verwendet werden! 'getResource (..)' gibt eine 'URL' zurück (die als' URL' gelesen werden kann, aber nicht in eine 'Datei' geschrieben wird). Die 2. Idee funktioniert nicht für jede Desktop-App. Wird mit Java Web Start gestartet. –

0

Vielen Dank für die Hilfe von allen. Die Lösung für mein Problem war tatsächlich anders, also werde ich es hier veröffentlichen, um diesen Beitrag zu vervollständigen. Es stellte sich tatsächlich heraus, dass ich die falsche Klassenlader wurde mit, für mich die richtige Klassenlader über wurde erreicht:

ClassLoader loader = Thread.currentThread().getContextClassLoader(); 

Sobald ich diesen Lader verwendet, alles magisch gearbeitet.

Verwandte Themen