2016-12-16 53 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();