java - 基于Codenvy中URI的Java中的getResource

标签 java codenvy

那是我的 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/

enter image description here

我也试过

  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/

相关文章:

java - 如何仅对已更改的源文件运行单元测试?

java - JPA 标准查询 : writing query with array operators

java - 单个和多个对象的MVC模式的实现

docker - CentOS 7: docker 中的 docker : “Error: No space left on device”

java - 如何为我的图表创建 addge 函数。我需要将边添加到节点

java - 有条件等待

Java:将 JMF 与 Codenvy IDE 结合使用?

android - 使用codenvy开发android项目

node.js - eclipse 车 : bash: gdb: command not found