无法获取资源、classloader 和 class returns 目标路径
Not able to get resource, classloader and class returns target path
我正在尝试从 /src/main/resources/properties/
获取属性文件,但由于某些原因,以下代码 returns 目标路径 类 而不是 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()
将始终正常工作。
行为正确。资源将从 class 路径加载。运行时不会有任何 src 文件夹。您可以做的是将 /src/main/resources 作为源文件夹(如果您不使用 Maven),以便将属性复制到目标文件夹。
我正在尝试从 /src/main/resources/properties/
获取属性文件,但由于某些原因,以下代码 returns 目标路径 类 而不是 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()
将始终正常工作。
行为正确。资源将从 class 路径加载。运行时不会有任何 src 文件夹。您可以做的是将 /src/main/resources 作为源文件夹(如果您不使用 Maven),以便将属性复制到目标文件夹。