2017-02-20 46 views
-1

我有一個java項目3模塊。如何指定從主jar文件路徑,而不是依賴JAR

[ ] Utils 
    ----->code 
    ----->pom.xml 
[ ] Module B 
    ----->Resources\config.xml 
    ----->code 
    ----->pom.xml 
[ ] Module C 
    ----->Resources\config.xml 
    ----->code 
    ----->pom.xml 

的utils的模塊是模塊A和B.模塊都依賴關係的utils的有其中兩個ModuleB和ModuleC使用「ReadConfig」功能。模塊B和模塊C在資源文件夾中具有不同的配置。

模塊B和模塊C都應該作爲獨立的jar運行,並從目標目錄(與jar相同的目錄)讀取config.xml。

目前我通過獲取配置文件位置:

public static final String JAR_PATH = Constants.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
public static final String CONFIG_PATH = JAR_PATH.substring(0, JAR_PATH.lastIndexOf('/')) + "/config.xml"; 

此代碼是utils的模塊中。

事情是,在IntelliJ(和netbeans)運行項目時,JAR_PATH是Utils目標目錄。我希望它指向模塊A或模塊B的目標目錄。

我的問題是:

  1. 什麼是在這種情況下的最佳實踐。兩個模塊使用不同的配置文件。
  2. 如何使intellij/netbeans運行模塊時獨立運行模塊A/B(具有依賴關係的jar)(如果我執行mvn程序集:單個程序會生成一個具有依賴關係的jar文件,我想知道怎麼做的IntelliJ)
+0

您不清楚您要求的是什麼,也請一次提出一個問題,因爲這兩者似乎沒有任何關係。 –

回答

0

如果需要從目錄中讀取一些文件從運行你的JAR程序文件, 然後只需使用:(它會被解析爲相對於從運行你的應用程序的目錄)

File f = new File("someDirInDirWhereMyJarIsRunFrom/myConfig.xml"); 
FileInputStream fis = new FileInputStream(f); 
// read the "fis" 

這是假設你的應用程序文件夾的結構是這樣的:

+ YourAppFolder 
    |---> yourApp.jar 
    |---+ someDirInDirWhereMyJarIsRunFrom 
     |--->myConfig.xml 
+0

謝謝!這是我最終做的。 – t0m9er