如何从代码中动态找到属性文件的路径?
How to find the path of properties file dynamically from the code?
我在 Java 中有一个 Maven 项目,其中我在这个目录下有一个 属性 文件 (quartz.properties):
/src/main/resources
现在我可以从这个 class 以两种方式使用这个 属性 文件,如下所示:
/**
* Create a StdSchedulerFactory that has been initialized via
* <code>{@link #initialize(Properties)}</code>.
*
* @see #initialize(Properties)
*/
public StdSchedulerFactory(Properties props) throws SchedulerException {
initialize(props);
}
/**
* Create a StdSchedulerFactory that has been initialized via
* <code>{@link #initialize(String)}</code>.
*
* @see #initialize(String)
*/
public StdSchedulerFactory(String fileName) throws SchedulerException {
initialize(fileName);
}
我不确定如何使用 StdSchedulerFactory
class 来提供我的 quartz.properties
文件的路径。
截至目前,我正在提供这样的硬编码路径,但这不是提供路径的正确方法,因为如果其他人 运行 在他们的台式机或笔记本电脑中使用此代码,那么它将无法工作。我将从我的桌面上 运行 这个应用程序,我也会制作一个可运行的 jar,所以我希望我的程序应该动态加载我的属性文件,而不需要任何硬编码路径。
public class TestingQuartz {
public static void main(String[] args) throws SchedulerException {
SchedulerFactory factory = new StdSchedulerFactory(
"C:\workspace\tester_quartz\quartzmain\src\main\resources\quartz.properties");
Scheduler scheduler = factory.getScheduler();
scheduler.start();
}
}
因为它似乎在您的 class 路径上,您可以这样做:
getClass().getClassLoader().getResource("quartz.properties").toExternalForm()
由于您的配置文件位于 mavenized 项目的 src/main/resources 中,它将嵌入到您使用 maven 构建的结果工件(jar,war...)中。因此你应该像这样加载文件 "from the classpath" :
StdSchedulerFactory factory = new StdSchedulerFactory();
factory.initialize(this.getClass().getClassLoader().getResourceAsStream("quartz.properties"));
我在 Java 中有一个 Maven 项目,其中我在这个目录下有一个 属性 文件 (quartz.properties):
/src/main/resources
现在我可以从这个 class 以两种方式使用这个 属性 文件,如下所示:
/**
* Create a StdSchedulerFactory that has been initialized via
* <code>{@link #initialize(Properties)}</code>.
*
* @see #initialize(Properties)
*/
public StdSchedulerFactory(Properties props) throws SchedulerException {
initialize(props);
}
/**
* Create a StdSchedulerFactory that has been initialized via
* <code>{@link #initialize(String)}</code>.
*
* @see #initialize(String)
*/
public StdSchedulerFactory(String fileName) throws SchedulerException {
initialize(fileName);
}
我不确定如何使用 StdSchedulerFactory
class 来提供我的 quartz.properties
文件的路径。
截至目前,我正在提供这样的硬编码路径,但这不是提供路径的正确方法,因为如果其他人 运行 在他们的台式机或笔记本电脑中使用此代码,那么它将无法工作。我将从我的桌面上 运行 这个应用程序,我也会制作一个可运行的 jar,所以我希望我的程序应该动态加载我的属性文件,而不需要任何硬编码路径。
public class TestingQuartz {
public static void main(String[] args) throws SchedulerException {
SchedulerFactory factory = new StdSchedulerFactory(
"C:\workspace\tester_quartz\quartzmain\src\main\resources\quartz.properties");
Scheduler scheduler = factory.getScheduler();
scheduler.start();
}
}
因为它似乎在您的 class 路径上,您可以这样做:
getClass().getClassLoader().getResource("quartz.properties").toExternalForm()
由于您的配置文件位于 mavenized 项目的 src/main/resources 中,它将嵌入到您使用 maven 构建的结果工件(jar,war...)中。因此你应该像这样加载文件 "from the classpath" :
StdSchedulerFactory factory = new StdSchedulerFactory();
factory.initialize(this.getClass().getClassLoader().getResourceAsStream("quartz.properties"));