2016-12-16 8 views
1

を得ることを確認するために、どのように私は次のプロジェクト構造を持っている:私は常にプロジェクトのルートディレクトリ

私は Config.groovyファイルを読むために必要がある場合があります

enter image description here

。ファイルパスを取得するには

String localDir = System.getProperty("user.dir") 
String configPath= localDir + File.separator + "config" + File.separator + "Config.groovy"; 

ここに問題があります。私はmainクラスの内部からそれを呼び出す場合、私は

D:\Programs\CheckFraudAlarms 

を取得し、私はutils.UtilGrooviesクラスの内部からそれを呼び出す場合、私はConfig.groovyファイルのパスが無効になり

D:\Programs\CheckFraudAlarms\src 

を取得します。私がSystem.getPropertyメソッドと呼んでいても、いつも私がプロジェクトのルートフォルダを取得できるようにするにはどうすればいいですか?

+0

は、あなたが(はgetClassを試してみました) .getClassLoader()。getResource( "/ config/Config.groovy")? –

答えて

2

一つの方法は、たとえばconf.dirためSystemプロパティの値として、あなたのconfigディレクトリの絶対パスを設定することができ、あなたはその後、"-Dconf.dir=c:\path\to\config\"であなたの起動コマンドで設定する必要があります。システムプロパティとしてuser.dirを使用することもできます。


もう一つの方法は、次のように文脈ClassLoaderからそれを得ることができるように、アプリケーションのクラスパスconfigディレクトリを追加することができます

String configPath = new File(
    Thread.currentThread().getContextClassLoader().getResource("Config.groovy").toURI() 
).getAbsolutePath(); 
関連する問題