Dateien aus dem "resource" - Folder kopieren in Verzeichnis

beta20

Top Contributor
Hallo zusammen,

ich möchte gerne aus meiner .jar - Datei die Dateien in mein JAVA - Folder (Programme/Java/...) kopieren. Anfänglich dachte ich, dass ich auf dem JAVA Folder keine Berechtigungen habe.
Ich habe meine JAR als EXE umgewandelt und dann als Admin ausgeführt - die Dateien werden aber ebenfalls nicht kopiert.

Ändere ich das Programm ab und lege meine Dateien, die ich kopieren möchte auf den Desktop, dann funktioniert es und die Dateien werden in den JAVA - Folder kopiert.
Es scheint so, dass entweder:
a) Mein Pfad zum Resource Folder nicht stimmt
b) Ich keine Berechtigungen im Resource Folder habe

Hier mein Code:


Code:
InputStream rxtxSerialStream = FileUtils.openInputStream(
           new File("src/main/resources/" + "validator/" + "windows/" + bit_version + "/rxtxSerial.dll"));
       File file_rxtxSerialDestination = new File(javaPathJRE + File.separatorChar + "rxtxSerial.dll");
       Files.copy(rxtxSerialStream, file_rxtxSerialDestination.toPath(), StandardCopyOption.REPLACE_EXISTING);

Was mache ich falsch?
 
Ich würde mal das jar überprüfen, ob es die Datei in diesem Verzeichnis überhaupt gibt. Denn, wenn src/ ein Source Package ist (Eclipse) wird es beim exportieren nicht im resultierenden jar erstellt.
 
Probier es mit getResourceAsStream. Etwa so:
Code:
         final String resourcesPath = "images/bumpMap.png";
        InputStream stream = Fibonacci.class.getResourceAsStream(resourcesPath);

Fibonacci ist bei mir der Klassenname 🙂

Du kannst nicht mit dem File-Objekt auf Resources zugreifen
 
Leider nein.
Ich habe es mit "resources/" und einmal ohne probiert. Leider funktioniert es nicht
Dann ist bei mir "rxtxSerialStream " immer NULL

Code:
            InputStream rxtxSerialStream = Installation.class
                    .getResourceAsStream("resources/validator/" + "windows/" + bit_version + "/rxtxSerial.dll");
            File file_rxtxSerialDestination = new File(javaPathJRE + File.separatorChar + "rxtxSerial.dll");
            Files.copy(rxtxSerialStream, file_rxtxSerialDestination.toPath(), StandardCopyOption.REPLACE_EXISTING);

Die JAR-Datei sieht so aus:
- com
- META-INF
- org
- resources
 
dann funktioniert es bei mir auch - danke Dir.
Dennoch unschön, da dann die libs bei mir im src/main/java - Ordner sind.
Falls jemand noch eine andere Idee hat, sodass die Dateien im src/main/resources - Ordner liegen können, bitte melden.
 
Man kann da auch statt einem relativen Pfadnamen auch einen absoluten Pfadnamen angeben. Aber ich weiss gerade nicht wie der dann interpretiert wird. Villeicht hat da jemand eine Lösung
 
Ich meine es müsste absolut addressiert so aussehen:
Code:
Installation.class
                    .getResourceAsStream("/resources/validator/" + "windows/" + bit_version + "/rxtxSerial.dll");

Das sollte vom root aus anfangen zu suchen.

@beta20
mach einfach mal ein "/" vor resources/

Hab es aber noch nicht testen können.
 

Zurück
Oben