我正在尝试从/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
这是预期的行为。对于Maven项目,在运行时,将构建项目并将其始终保存在target
文件夹中。您也可以通过某些配置更改此文件夹。在此目标文件夹中,您的应用程序运行,因此您的路径显示在classloader.getResource()
方法中。如果您正在构建一个jar,那么您的资源将在jar内并且始终可用。因此,classloader.getResource()
始终可以正常工作。
行为正确。资源将从类路径加载。在运行时将没有任何src文件夹。您可以做的是将/ src / main / resources设置为源文件夹(如果您未使用maven),以便将属性复制到目标文件夹。