Java 按相对路径从资源加载文件(Spring)

Java 按相对路径从资源加载文件(Spring),java,spring,Java,Spring,我有一个春季项目。我的文件在这里:/src/main/java/resources/file.txt 我怎样才能得到这个的完整路径 如果我从测试运行,它会工作: String path = System.getProperty("user.dir") + "/src/main/java/resources/file.txt"; 但如果我使用tomcat,它会显示tomcat文件夹中的另一个路径。所以spring找不到这条路 编辑:此.getClass().getClassLoader().ge

我有一个春季项目。我的文件在这里:/src/main/java/resources/file.txt

我怎样才能得到这个的完整路径

如果我从测试运行,它会工作:

String path = System.getProperty("user.dir") + "/src/main/java/resources/file.txt";
但如果我使用tomcat,它会显示tomcat文件夹中的另一个路径。所以spring找不到这条路

编辑:此.getClass().getClassLoader().getResource(“file.txt”)为空


更新:很抱歉提出了愚蠢的问题。它可以工作,我设置了错误的文件名。

因为file-
file.txt
在参考资料目录中,通常构建过程(像Maven、Gradle这样的工具)会将它复制到
类路径。这将很容易用相对路径加载文件

这篇文章广泛讨论了如何从
类路径
加载文件。
使用Spring,您可以使用类。它可以从java类路径读取文件,而无需太多纯java样板代码。

相对路径取决于当前上下文:应用程序、库等等

您可以挖掘文档或简单地添加以下内容

File fn = new File("resources/database.db");
logger.info(fn.getAbsolutePath());
查看当前路径在该时刻的位置

例如,在Spring@Configuration块中创建SQLite数据源

@Configuration
.....
@Bean
....
        String dbName="database.sqlite";
        File fn = new File("src/main/resources/"+dbName);
        String name=fn.toURI().toString();
        dataSourceBuilder.url("jdbc:sqlite:"+name );
....