Java 在src中读取相对静态文件

Java 在src中读取相对静态文件,java,Java,我在src中有一个包含一些静态内容的.tpl文件。 e、 g.src/A/B/C/test.tpl,我试图从该文件的类同级读取它(src/A/B/C/test) 我怎么也找不到它!FileReader抛出FileNotFoundException 解决方案:Class.getResource()有效。问题在于默认情况下不会编译的tpl扩展。IDE具有添加要编译的扩展的设置。我使用了.html而不是更新编译器设置 Test.class.getResource("/A/B/C/test.html")

我在src中有一个包含一些静态内容的.tpl文件。 e、 g.
src/A/B/C/test.tpl
,我试图从该文件的类同级读取它(
src/A/B/C/test

我怎么也找不到它!FileReader抛出FileNotFoundException

解决方案:Class.getResource()有效。问题在于默认情况下不会编译的tpl扩展。IDE具有添加要编译的扩展的设置。我使用了.html而不是更新编译器设置

Test.class.getResource("/A/B/C/test.html").getPath().replace("%20", " ")
你应该使用


将文件移动到src/main/resources,然后尝试以下操作如何-

ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/test.tpl");

    try {

        context.getClassLoader().getResourceAsStream("test.tpl");

       ...
        } 
   catch (IOException ex) {
        ex.printStackTrace();
    }

您需要如何处理该文件?当它在JAR中时,您可以获取对它的URL引用或将其作为InputStream打开,但仅此而已。如果您需要文件的路径,那么您必须在运行时将其移动或从JAR中提取出来。这是模板文件。我读了它,替换了一些占位符和标签,然后将其发送到打印和刷新…如果它起作用,你应该接受答案。。。对的使用“this”在静态上下文中不起作用。所以你不能这么做。getClassLoader()。只是一个例子。我没有看到阿维拉姆的回答。
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/test.tpl");

    try {

        context.getClassLoader().getResourceAsStream("test.tpl");

       ...
        } 
   catch (IOException ex) {
        ex.printStackTrace();
    }