Java 如何确保始终获取项目根目录

Java 如何确保始终获取项目根目录,java,groovy,filepath,Java,Groovy,Filepath,我有以下项目结构: 有些情况下,我需要读取Config.groovy文件。要获取文件路径,我说 String localDir = System.getProperty("user.dir") String configPath= localDir + File.separator + "config" + File.separator + "Config.groovy"; 但这里有个问题。如果我从main类内部调用它 D:\Programs\CheckFraudAlarms 如果我从ut

我有以下项目结构:

有些情况下,我需要读取
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
方法,都始终获取项目根文件夹?

一种方法是将配置目录的绝对路径设置为
系统
属性的值,例如
conf.dir
,然后,您需要在启动命令中使用
“-Dconf.dir=c:\path\to\config\”
对其进行设置。您还可以使用
user.dir
作为系统属性


另一种方法是将
config
目录添加到应用程序的classpath,以便能够从上下文
ClassLoader
获取它,如下所示:

String configPath = new File(
    Thread.currentThread().getContextClassLoader().getResource("Config.groovy").toURI()
).getAbsolutePath();
您是否尝试过getClass().getClassLoader().getResource(“/config/config.groovy”)?