0

스프링 부트 JAR MyMain.jar가 있는데, BOOT-INF/lib 내에 종속 jar가 있습니다.Springboot 종속 jar 클래스 패스 내부의 리소스에 액세스 할 수 없습니다.

BOOT-INF/lib/MyDep.jar/abcd.properties에서 속성 파일에 액세스하려고합니다.

아래 코드를 시도했습니다.

InputStream in = new ClassPathResource("abcd.properties").getInputStream(); 
System.out.println("InputStream : "+in); 
String line; 
BufferedReader br = new BufferedReader(new InputStreamReader(in));   
while ((line = br.readLine()) != null) { 
    System.out.println(line); 
} 

내 Eclipse IDE에서 완벽하게 작동합니다. 하지만 명령 줄에서 jar 파일로 실행하면 아무 것도 인쇄되지 않습니다.

[email protected]65e

내의 readLine()는 명령 줄 실행 중에 널 (null) 제공합니다.

아무도 도와 주실 수 없습니까?

+0

나는 당신이하려고하는 것을 따라하기가 약간 힘들지만 그것이 효과가 있어야한다고 생각합니다. 아마도 문제를 재현하는 작은 샘플 프로젝트를 공유 할 수 있습니까? –

+0

@AndyWilkinson - 기본적으로 부모 jar 파일 클래스에서 종속성 jar의 클래스 경로 내부에있는 속성 파일을 읽으려고합니다. 공유 할 샘플 프로젝트를 만듭니다. – RedGuts

답변

0

또는 나를 위해 일합니다. 서로 다른 프로파일 (-Dspring.profiles.active)

@Configuration 
@ComponentScan("yourpackage") 
public class AppConfig { 
    @Profile("alpha") 
    @Configuration 
    @PropertySource("common-alpha.properties") 
    static class Alpha{} 

    @Profile("staging") 
    @Configuration 
    @PropertySource("common-staging.properties") 
    static class Staging{} 

    @Profile("production") 
    @Configuration 
    @PropertySource("common-production.properties") 
    static class Production{} 
} 

당신은 스프링 사용하여 설정 파일을 읽고 싶다면

응용 프로그램 프로젝트

@Configuration 
@ComponentScan("yourpackage") 
public class AppConfig { 
    @Configuration 
    @PropertySource("common.properties") 
    static class default{} 
} 

에서이 클래스를 생성 @Autowired 다음과 같이 주석을 작성해야하지만 클래스에 @Component 또는 이와 유사한 주석을 추가해야합니다. 당신의 재산이

env.getProperty("property") 

나는 그것이 도움이되기를 바랍니다 파일에

@Autowired 
Environment env; 

당신은 속성을 얻을 수 있습니다.

+0

시도 할 수 있지만 속성 소스를 하드 코드 된 정적 파일 – RedGuts

+0

@PropertySource ("$ {propertiesArgument} .properties")가 아닌 속성 매개 변수로 지정하고 -DpropertiesArgument 만 전달하면됩니다. 응용 프로그램 실행 중에 제공된 on 명령 줄 매개 변수 –