如何确保我总是得到项目根目录

时间:2016-12-16 08:21:07

标签: java groovy filepath

我有以下项目结构:

enter image description here

有些情况我需要阅读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方法?

1 个答案:

答案 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();