2017-02-20 1 views
-1

3 개의 모듈이있는 Java 프로젝트가 있습니다.종속성이 아닌 Main jar 파일 경로를 지정하는 방법 JAR

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

유틸 모듈 유틸 ModuleB 및 ModuleC 모두 사용 'ReadConfig'기능을 갖는 모듈 A 및 B. 모듈 모두에 대해 의존성이다. 모듈 B와 모듈 C는 리소스 폴더에서 다른 구성을가집니다.

모듈 B와 모듈 C 모두 종속성이있는 독립 실행 형 jar로 실행하고 대상 디렉토리 (jar가있는 디렉토리)에서 config.xml을 읽어야합니다. 이 코드는의 Utils 모듈에

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"; 

:

현재 내가 통해 설정 파일의 위치를 ​​얻는다.

내가 IntelliJ (및 netbeans) 프로젝트를 실행할 때, JAR_PATH는 Utils 대상 디렉토리입니다. 모듈 A 또는 모듈 B 대상 디렉토리를 가리 키기를 원합니다.

내 질문은 다음과 같습니다

  1. 이 시나리오에서 가장 좋은 방법은 무엇입니까. 두 모듈이 다른 설정 파일을 사용하는 곳.
  2. 모듈을 실행할 때 intellij/netbeans를 모듈 A/B를 독립 실행 형 (종속성이있는 jar)으로 만드는 방법 (mvn 어셈블리를 수행하는 경우 : 작동하는 종속성이있는 하나의 jar 파일을 생성합니다. IntelliJ에) 당신이 당신의 항아리 응용 프로그램 파일을 실행 곳에서 디렉토리에서 일부 파일을 읽을 필요가있는 경우
+0

당신이 무엇을 요구하고 있는지 명확하지 않으며,이 두 가지가 어떤 식 으로든 관련되어 보이지 않기 때문에 한 번에 한 가지만 질문하십시오. –

답변

0

이 후 바로 사용 : (그것은)

앱을 실행하는 곳에서 디렉토리에 상대적으로 해결 될 것입니다
File f = new File("someDirInDirWhereMyJarIsRunFrom/myConfig.xml"); 
FileInputStream fis = new FileInputStream(f); 
// read the "fis" 

이것은 앱 폴더의 구조가 다음과 같다고 가정합니다.

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

감사! 이게 내가 한 일이야. – t0m9er