那是我的 Controller :
public class GreetingController implements Controller
{
private static final String MARKERS_FILE_NAME = "markers.txt";
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception
{
String result = null;
File file = new File(getClass().getResource(MARKERS_FILE_NAME).toURI());
}
}
我有文件 markers.txt 与 Controller 处于同一级别,但令人费解的是我在这一行得到了一个 Nullpointer:File file = new File(getClass().getResource(MARKERS_FILE_NAME).toURI()) ;
java.lang.NullPointerException
com.codenvy.example.spring.GreetingController.handleRequest(GreetingController.java:27)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
仅供引用:我正在使用 https://codenvy.com/
我也试过
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream("com/codenvy/example/spring/markers.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
结果是:
java.lang.NullPointerException
java.io.Reader.<init>(Reader.java:78)
java.io.InputStreamReader.<init>(InputStreamReader.java:72)
com.codenvy.example.spring.GreetingController.handleRequest(GreetingController.java:32)
最佳答案
我认为您需要将文件 markers.txt
的路径指定为 relative 到类路径的根目录。由于您的屏幕截图显示了包结构,因此该路径是已知的。以下任一项都应该有效:
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream("com/codenvy/example/spring/SomeTextFile.txt");
InputStream in = this.getClass()
.getResourceAsStream("/com/codenvy/example/spring/SomeTextFile.txt");
上面的代码片段返回一个 InputStream
,假设您打算读取文件,这对您来说已经足够了。
关于java - 基于Codenvy中URI的Java中的getResource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38122834/