无法获取资源,类加载器和类返回目标路径

问题描述 投票:0回答:2

我正在尝试从/src/main/resources/properties/获取属性文件,但是由于某些原因,以下代码返回目标类的路径而不是src文件。您能帮忙吗?

System.out.println(PropTest.class.getResource("/properties/app.properties"));
System.out.println(PropTest.class.getClassLoader().getResource("properties/app.properties"));
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
System.out.println(classloader.getResource("properties/app.properties"));
PropTest prop=new PropTest();
System.out.println(prop.getClass().getResource("/properties/app.properties"));

每行给出相同的输出,是:

file:/C:/Users/b./eclipse-workspace/ordermonitoring/target/classes/properties/app.properties
file:/C:/Users/b./eclipse-workspace/ordermonitoring/target/classes/properties/app.properties
file:/C:/Users/b./eclipse-workspace/ordermonitoring/target/classes/properties/app.properties
file:/C:/Users/b./eclipse-workspace/ordermonitoring/target/classes/properties/app.properties
java file properties classloader
2个回答
0
投票

这是预期的行为。对于Maven项目,在运行时,将构建项目并将其始终保存在target文件夹中。您也可以通过某些配置更改此文件夹。在此目标文件夹中,您的应用程序运行,因此您的路径显示在classloader.getResource()方法中。如果您正在构建一个jar,那么您的资源将在jar内并且始终可用。因此,classloader.getResource()始终可以正常工作。


0
投票

行为正确。资源将从类路径加载。在运行时将没有任何src文件夹。您可以做的是将/ src / main / resources设置为源文件夹(如果您未使用maven),以便将属性复制到目标文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.