2016-07-28 8 views
0

Ich benutze Spring MVC. In meinem Controller rief ich eine Funktion von MyClassSpring MVC Datei nicht gefunden Ausnahme

MyClass{ 
    public static void readFile(){ 
    File file = new FileReader("myPath/myFile.txt"); 
    ... 
    } 
    public static void main(String[] args) { 
    readFile();//No problem 
    } 
} 

Controller:

@Controller 
public class MyController{ 
    @RequestMapping(value = "/url", method = RequestMethod.GET) 
    public String readFile(Locale locale, Model model) { 
    MyClass.readFile();//File not found exception 
    .... 
    } 
} 

Das Lesen funktioniert, wenn ich es in der Hauptprüfung() von MyClass, aber wenn ich laufe das Projekt auf Server und Besuch "/ url", habe ich folgendes erhalten:

java.io.FileNotFoundException: myPath/myFile.txt (The system cannot find the path specified) 

Wie lege ich den Pfad im Controller fest?

Vielen Dank für Ihre Zeit.

+1

Vielleicht könnte dies für Sie nützlich sein https://stackoverflow.com/questions/36371748/spring-boot-access-static-resources-missing-scr-main-resources – lenach87

Antwort

0

Was ist das Arbeitsverzeichnis auf dem Server? Gibt es in diesem Verzeichnis den relativen Pfad zur Datei ("myPath/myFile.txt") auf dem Server?

Angenommen, Sie müssen nur myFile.txt lesen, dann würde myFile.txt normalerweise in der WAR enthalten sein und über getResourceAsStream gelesen werden.

0

Ich denke, Sie suchen nach Resource Implementierungen im Frühjahr. Spring bestimmt, welcher Ressourcentyp verwendet werden soll. Wenn Ihre Datei beispielsweise im Klassenpfad Spring enthalten ist, erstellt sie eine ClasspathResource oder sie zeigt auf eine Datei und erstellt eine FileResource. Wenn Sie mit Spring 4. Versuchen Sie so etwas wie

@Value("file:///myPath/myFile.txt") 
Resource myFile; 

Werfen Sie einen Blick auf diese Spring Resources docs

0

weil dies nicht unbedingt Weg ist. Programm-Dateien unter Arbeitsverzeichnis finden Sie dies in den ersten Programm und die zweite

System.out.println("Working Directory = " + 
    System.getProperty("user.dir")); 

hinzufügen können Sie den Unterschied sehen.

Verwandte Themen