我有一个包含3个模块的java项目。
[ ] Utils
----->code
----->pom.xml
[ ] Module B
----->Resources\config.xml
----->code
----->pom.xml
[ ] Module C
----->Resources\config.xml
----->code
----->pom.xml
utils模块是模块A和模块B的依赖项。utils具有' ReadConfig' ModuleB和ModuleC使用的功能。模块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目标目录。
我的问题是:
答案 0 :(得分:0)
如果您需要从运行jar app文件的目录中读取某个文件, 然后只使用:(它将被解析为相对于你运行你的应用程序的目录)
File f = new File("someDirInDirWhereMyJarIsRunFrom/myConfig.xml");
FileInputStream fis = new FileInputStream(f);
// read the "fis"
这假设您的app文件夹的结构如下:
+ YourAppFolder
|---> yourApp.jar
|---+ someDirInDirWhereMyJarIsRunFrom
|--->myConfig.xml