2017-09-24 1 views
0

Ich erstellte eine Spring-Boot-Anwendung, die eine Excel-Datei für Daten im Front-End angezeigt wird, so dass im Grunde ist es die Quelle von persistenten Daten. Ich bin in der Lage, korrekt von meiner Eklipse aus zu laufen, aber wenn ich ein Spring Boot jar erzeuge und es von der Kommandozeile aus starte, schlägt es fehl, da die Dateien nicht im Jar enthalten sind.Fügen Sie eine externe Dateien in Spring Boot JAR

Ich habe versucht, zwei Standort src/main/resources und/src/main/webapp/WEB-INF/extern/aber in beiden Fällen die Dateien sind nicht enthalten.

Code:

private static final String FILE1 = "\\src\\main\\webapp\\WEB-INF\\external\\file1.csv"; 
private static final String FILE2 = "\\src\\main\\webapp\\WEB-INF\\external\\file2.csv"; 
private static String currentDirectory = Paths.get(".").toAbsolutePath().toString(); 
private static String completeAbsolutePath = currentDirectory 
         .substring(0, currentDir.length() - 1) 
         .replace("\\", "\\\\"); 

reader = new CSVReader(new FileReader(completePath + FILE1)) 

Fehler:

java.io.FileNotFoundException: c: \ löschen \ src \ main \ webapp \ WEB-INF \ external \ File1.csv

Kann jemand bitte helfen?

+0

Bitte fügen Sie den Code in dem Sie auf die Datei verweisen – zuckermanori

+0

https://stackoverflow.com/questions/22886083/how-do-i-run-a-spring-boot-executable-jar-in-a -Produktion-Umgebung –

+0

Hallo @zuckermanori Hier ist der Code: ich die Daten aus zwei Dateien zu lesen (man denke an sie als zwei separate Datenbanktabellen) private static final String FILE1 = „\\ src \\ Haupt \\ Webapp WEB \\ -INF \\ external \\ Datei1.csv "; private statische letzte Zeichenfolge FILE2 = "\\ src \\ Haupt \\ Webapp \\ WEB-INF \\ externe \\ Datei2.csv"; private static Zeichenfolge completeAbsolutePath = currentDirstring (0, currentDir.length() - 1) .replace ("\\", "\\\\"); reader = neuer CSVReader (neuer FileReader (completePath + FILE1)) –

Antwort

1

Sie haben zwei Probleme:

  1. Sie setzen die Ressourcen unter src Ordner stattdessen einen bestimmten Ressourcen-Ordner zu erstellen und ihn dort. zu tun, dass Sie einen Ordner auf dem gleichen Ebene als „src“ rechts auf den Ordner, wählen Sie „Mark Directory-As -> Ressourcen Root“ genannt „Ressourcen“ erstellen sollte
  2. Sie beziehen sich auf die Datei mit einem relativer Pfad Dies funktioniert möglicherweise in Eclipse, aber wenn Sie es als jar ausführen, dass Pfade geändert werden und relativen Pfad nicht mehr korrekt ist.

    Um eine solche Ressource zu verwenden, sollten Sie die ClassLoader API ClassLoader.getResourceAsStream(String name) verwenden, um Ihre Ressource zu erhalten.

    Es sollte wie folgt aussehen:

    reader = new CSVReader(new InputstreamReader(ClassLoader.getResourceAsStream(completePath + 
    

    FILE1)));

+0

hast du das Glas geöffnet und gesehen, dass die Datei nicht da ist? – zuckermanori

+0

Ich konnte die Dateien mit der von Ihnen bereitgestellten Anweisung in das Jar einfügen.Ich habe die Datei in den Ressourcenordner gelegt und es wurde stattdessen und sie wurden in der JAR-Datei enthalten. Danke. Die Anwendung wird immer noch nicht von der Eingabeaufforderung ausgeführt, aber das ist ein anderes Problem, glaube ich. –

Verwandte Themen