2016-09-27 4 views
3

스프링 부트를 사용하여 엔터프라이즈 소프트웨어 시스템과 상호 작용하는 소프트웨어 시스템을 구축 중입니다. 내 시스템은 엔터프라이즈 시스템의 일부 jar 및 * .ini 파일에 의존하므로 Maven의 모든 종속성을 압축 할 수 없습니다. 임베디드 Tomcat으로 실행 가능한 Jar로 스프링 부트를 실행하고 싶습니다. 또한 커맨드 라인을 통해 클래스 패스를 설정할 수 있기를 바랍니다. 따라서 다음과 같이됩니다 :스프링 부트 실행 파일 (클래스 경로 포함)

java -classpath /home/sleeper/thirdparty/lib -jar MyApp.jar 

그러나 -classpath와 -jar는 공존 할 수 없습니다. 나는 "-Dloader.path"를 시도했다. 폴더 아래에있는 모든 jar 파일을로드 할 수 있었지만 폴더의 * .ini 파일과 같은 다른 파일은로드 할 수 없었습니다.

Tomcat이 내장 된 Spring 실행 파일로 작업하려면 -classpath를 만들 수있는 방법이 있습니까?

모든 도움을 주셔서 감사합니다.

+1

이 질문을하고 대답을 대답 : http://stackoverflow.com/questions/15930782/call-java-jar-myfile-jar-with-additional-classpath-option – Strelok

답변

4

외부 라이브러리를 추가하려는 경우 loader.path 속성을 사용할 수 있습니다.

java -Dloader.path="your-lib/" -jar your-app.jar 

UPDATE

당신은 또한 당신이 만들 수있는 클래스 경로에서 추가 파일을 읽을 필요가있는 경우/응용 프로그램의 매니페스트 파일을 변경합니다.

여러분은 스프링 부트 컨텍스트를 클래스 de.app.Application에서 초기화한다고 가정합니다.

Manifest-Version: 1.0 
Main-Class: de.app.Application 
Class-Path: /home/sleeper/thirdparty/lib/ 

을 그리고 당신은 단순히 java -jar MyApp.jar 사용하여 응용 프로그램을 시작할 수는 다음과 같이 MANIFEST.MF는해야 보입니다.

MANIFEST.MF에 대한 자세한 내용은 Working with Manifest Files: The Basics을 참조하십시오.

+0

나는 실제로 그것을 시도했다. 내 원래 질문을 참조하십시오. -classpath와 정확히 일치하지는 않습니다. jar 파일은로드하지만 ini 파일은로드하지 않습니다. – user1670498

+0

@ user1670498 죄송합니다. 새로운 내용에 대한 내 대답을 참조하십시오. –

+0

흠, 해결책 인 것처럼 보이지만 그것은 나를 위해 작동하지 않습니다. 클래스 경로는 여전히 런타임에로드되지 않습니다. 내 매니페스트의 Spring-Boot-Lib과 충돌하는지 확실하지 않은 경우 ... – user1670498

관련 문제