2017-11-10 3 views
0

Ich habe ein Problem, wo ich eine JSON-Datei geladen werden soll, die im Stammordner meiner app ist directory.So ich habe die einfachenJava: FileNotFound nach Server bereitstellen

 File file = new File("assetlinks.json"); 

, wenn ich die Anwendung ausführen auf meinem lokalen Server wird die Datei korrekt bedient aber wenn ich online drücke es die Datei nicht gefunden wird es löst FileNotFoundException.

Bitte was fehlt mir hier?

+0

Bitte geben Sie den richtigen Dateipfad –

+0

die Datei befindet sich im Stammordner meiner Anwendung, also nehme ich an, dass es keinen vollständigen Dateipfad benötigt. Und es funktioniert lokal. – Ogbe

+0

Stellen Sie den absoluten Pfad –

Antwort

1

Nach dem aktuellen Arbeitsverzeichnis anmelden, entdeckte ich, dass es eine leere Zeichenfolge zurückgegeben, ist dies, weil die app in einem Container gebündelt und Ressourcen zur Verfügung diese Ressourcen explizit in der Docker-Datei hinzugefügt werden müssen, so einfach die Ressource hinzugefügt, das Problem zu lösen Docker

ADD assetlinks.json assetlinks.json 

Nachdem ich tat, dass ich in der Lage war, die Datei zu erhalten mit

File file = new File("assetlinks.json"); 
1

Wenn es die Wurzel einer Web-App ist, benötigen Sie:

File file = new File(servletRequest 
     .getServletContext().getRealPath("/assetlinks.json")); 

Damit wird eine URL wie Pfad (/) in Bezug auf die Wurzel des Web-App in einem Dateisystem File.

(BTW ein Unterverzeichnis könnte eine bessere Idee.)

+0

Vielen Dank, aber ich benutze kein Servlet Ich gebe die Datei von einer API Ressource zurück – Ogbe

+0

Sie könnten 'System.getProperty (" user.dir ")' wissen, oder einfach "file.getAbsolutePath()' abmelden " . Vielleicht fehlen Rechte. –

+0

danke noch einmal, ich habe versucht, das aktuelle Arbeitsverzeichnis mit System.getProperty ("user.dir") zu bekommen, aber es gibt das richtige Verzeichnis auf meinem System und eine leere Zeichenfolge auf dem Server. Könnte das daran liegen, dass der Server in einen Kubernetes-Container eingepackt ist? – Ogbe