2016-12-16 52 views
1

我有以下项目结构:如何确保我总是得到项目的根目录

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方法?

+0

你尝试过的getClass() .getClassLoader()。getResource(“/ config/Config.groovy”)? –

回答

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