2015-01-21 3 views
2

스프링 부트 앱이 있고 -Dloader.path =로 시작합니다. jar 파일 중 하나는 hive-exec.jar입니다. 이 파일에는 minlog-1.2.jar이라는 번들로 묶인 jar 파일이 있습니다. -Dloader.path에이 파일을 지정하면 오류가 발생합니다.스프링 부트 createJarFileFromFileEntry

중첩 된 항목 'minlog-1.2.jar'을 열 수 없습니다. 그것은 압축되었고 중첩 jar 파일은 압축없이 저장되어야합니다. 실행 가능한 jar 파일을 만드는 데 사용 된 메커니즘을 확인하십시오. at org.springframework.boot.loader.jar.JarFile.createJarFileFromFileEntry (JarFile.java:378) at org.springframework.boot.loader.jar.JarFile.createJarFileFromEntry (JarFile 된 .java : 355) org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive (JarFileArchive.java:108에서 org.springframework.boot.loader.jar.JarFile.getNestedJarFile (JarFile.java:341) 에서 ) org.springframework.boot.loader에서 org.springframework.boot.loader.PropertiesLauncher.getClassPathArchives에서 org.springframework.boot.loader.archive.JarFileArchive.getNestedArchives (JarFileArchive.java:92) (PropertiesLauncher.java:445) 에서 .Launcher.launch (Launcher.java:60) at org.springframework.boot.loader 내가 폴더에이 파일을 복사 -Dloader.path에서 해당 폴더를 추가하는 경우 .PropertiesLauncher.main (PropertiesLauncher.java:564는)

그러나, 나는 어떤 오류가 발생하지 않습니다.

무엇이 누락 되었습니까? 내가 대신 프로젝트의 메이븐의 의존성의 외부 항아리와 같은 데이터베이스 드라이버를 관리하기 위해 노력하고

답변

0

, 감사합니다. 응용 프로그램은 JPA 프레임 워크를 사용하므로 하나의 환경에서 다른 SQL 데이터베이스 구현으로 전환 할 수 있기를 원했습니다 (예 : DEV의 H2, 프로덕션의 Oracle). 외부 종속성으로 h2 데이터베이스 드라이버 jar를 관리해야했습니다. "-Dloader.path"명령 줄 옵션을 사용하여로드하는 동안 설명했던 것과 동일한 문제가 발생했습니다.

org.springframework.boot.loader.jar.JarFile 소스 코드를 보면 클래스는 폴더 항목과 jar 항목을 다르게 관리합니다. getNestedArchives 메소드는이 예외를 throw하는 createJarFileFromFileEntry 메소드를 호출하는 것 같습니다. 누군가 그것에 대해 알고 있으면 어떤 이유에서든 환영받을만한 이유가 있어야합니다. 디렉토리에서 항아리 종속성을로드 할 때 java.util.jar.JarFile 생성자 대신 사용되며, 예외를 throw하지 않는 것

... createJarFileFromFileEntry 방법에

, 예외를 던지는 instad, log.warn 만 있고 예외를 throw 할 수 없습니까?

+0

내가 아는 한 loader.path를 사용하려면 jar 실행기 대신 'org.springframework.boot.loader.PropertiesLauncher'를 사용해야합니다. 나는 그것을 사용하고 있지만 여전히 같은 예외로 실패한다. Jar 발사기를 사용한다고 추측합니다. 이것에 대한 버그를 여는 것은 어떻습니까? – nir

+0

'org.springframework.boot.loader.PropertiesLauncher'도 사용하고 있습니다. 나를 위해, 그것은 조금 이상하다. 우리는 jar 파일을 포함하는 디렉토리를 제공하고 jar 파일 자체를 제공함으로써 jar 파일을 가져 와서 다른 행동을 취한다. 귀하의 재량권을 따를 것이며 다음 문제를 열게됩니다 : https://github.com/spring-projects/spring-boot/issues/3701 –