我有以下项目结构:
有些情况我需要阅读Config.groovy
文件。要获取文件路径,我说
String localDir = System.getProperty("user.dir")
String configPath= localDir + File.separator + "config" + File.separator + "Config.groovy";
但这里有一个问题。如果我从main
课程中调用它,我会得到
D:\Programs\CheckFraudAlarms
如果我从utils.UtilGroovies
课程中调用它,我会得到
D:\Programs\CheckFraudAlarms\src
导致Config.groovy文件的路径无效。我怎样才能确保始终获得项目根文件夹,无论我在哪里调用System.getProperty
方法?
答案 0 :(得分:2)
一种方法是将配置目录的绝对路径设置为System
属性的值,例如conf.dir
,然后您需要在其中设置它使用"-Dconf.dir=c:\path\to\config\"
启动命令。您还可以使用user.dir
作为系统属性。
另一种方法是将config
目录添加到应用程序的类路径,以便能够从上下文ClassLoader
获取它:
String configPath = new File(
Thread.currentThread().getContextClassLoader().getResource("Config.groovy").toURI()
).getAbsolutePath();