programing

스프링 부트 실행 파일 병을 추출할 수 없는 이유는 무엇입니까?

telebox 2023. 7. 11. 22:51
반응형

스프링 부트 실행 파일 병을 추출할 수 없는 이유는 무엇입니까?

스프링 부트 프로젝트, 실행 가능한 병으로 빌드하지만 실행 가능한 병을 추출할 수 없다는 것을 발견했습니다. 예를 들어,

jar xvf spring-boot-foo-0.0.1-SNAPSHOT.jar

무출력그러나 일반적인 병을 추출할 때는 성공적입니다.

jar xvf mysql-connector-java-5.1.38.jar
created: META-INF/
inflated: META-INF/MANIFEST.MF
created: META-INF/services/
...

왜 이러한가?

넌 할 수 있다.less다음을 찾을 수 있습니다.

#!/bin/bash
#
#    .   ____          _            __ _ _
#   /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
#  ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
#   \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
#    '  |____| .__|_| |_|_| |_\__, | / / / /
#   =========|_|==============|___/=/_/_/_/
#   :: Spring Boot Startup Script ::
#

즉, 일반적인 병이 아니라 병 뒤에 있는 bash 파일입니다.

이 파일을 추출할 수 있습니다.unzip spring-boot-foo-0.0.1-SNAPSHOT.jar

또는 spring-boot-maven-filen의 실행 파일 플래그를 false로 설정하여 일반 jar 파일을 만듭니다.

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>false</executable>
    </configuration>
</plugin>

저는 보통 7zip을 사용하여 윈도우에서 파일을 추출하는데 잘 작동하지 않았습니다.@peace0phmind 덕분에 텍스트 편집기(notepad++)로 열려고 했고 내용이 셸 스크립트와 바이너리 코드로 이어지는 것을 보았습니다.

나는 방금 bash 스크립트 줄을 모두 제거하고 파일을 저장했으며 이제 7zip으로 열 수 있습니다.

7zip을 사용하여 Springboot 실행 파일 병을 열 때 .jar 파일을 마우스 오른쪽 버튼으로 클릭하고 두 번째 7zip 옵션 "Open Archive..추가 형식에서 zip 형식을 선택합니다.보관 파일로 열기를 선택하면 작동하지 않습니다.

Spring boot 2.6.7로 업그레이드하고 gradle bootJar 태스크를 사용하여 실행 파일 jar를 생성합니다.이제 실행 가능한 병이라도 추출할 수 있습니다.

이것이 Spring boot 2.6.x의 버그인지 확실하지 않습니다.

Spring boot version 2.6.7, Spring cloud version 2021.0.0, Gradle 6.9.0으로 시도했습니다.

표준 zip 보관 도구를 사용하여 병을 추출하는 것을 제한할 수 없습니다.

언급URL : https://stackoverflow.com/questions/37783069/why-cant-i-extract-a-spring-boot-executable-jar

반응형