강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

han127kr님의 프로필 이미지
han127kr

작성한 질문수

자바 빌드가 안됩니다. 매니페스트 오류

작성

·

263

·

수정됨

0

스프링부트-JPA-활용-1 강의를 듣고 있는데요

섹션1. JPA와 DB설정, 동작 확인 을 듣고 있습니다.

 

강의에서 빌드하고 jar 실행하는 과정에서, 콘솔창에 실행해보니

 

이런 오류가 뜨면서 실행이 안됩니다.

 

이것저것 검색하면서 해결하려고 했는데, 해결이 잘 안되네요 ㅜㅜ

 

그래들 코드 공유드립니다.

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.1'
    id 'io.spring.dependency-management' version '1.1.4'
}

group = 'jpabook'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

configurations {
    compileOnly {
       extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-devtools'
    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.1'
    testImplementation 'junit:junit:4.13.1'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

jar{
    manifest {
       attributes 'Main-Class': 'jpabook.jpashop.JpashopApplication'
    }
}

tasks.named('test') {
    useJUnitPlatform()
}

 

 

혹시 무엇이 문제인지 알려주실 수 있나요?

 

 

참고로 윈도우에서 실행해서 그런지, 김영한님 콘솔창 명령어를 그대로 입력해면 실행이 안되어서, jar 파일은 만드는법을 인터넷 검색해서 만들어서 실행했습니다.

 

 

file -> project structure 로 가서 아래와 같이 생성

그 뒤 build -> build artifacts... -> Action -> build 로 jar 파일을 생성했습니다.

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

han127kr님, 문제를 겪고 계시는 것 같아 도움을 드리고자 합니다.

제가 전달받은 정보에 의하면, Spring Boot Reference Documentation에서는 실행 가능한 JAR 파일을 생성하기 위해 두 가지 방식을 소개하고 있습니다. 하나는 Gradle을 사용하는 것이고, 다른 하나는 Maven을 사용하는 방식입니다.

han127kr님께서 공유해주신 Gradle 스크립트를 살펴보니, jar 태스크에서 Main-Class을 설정하는 부분이 보입니다. 그 부분에서는 다음과 같이 설정하셨네요:

jar{
    manifest {
       attributes 'Main-Class': 'jpabook.jpashop.JpashopApplication'
    }
}

이 부분은 맞게 설정하신 것 같습니다. 그러나, 해당 클래스가 실제로 존재하는지, 그리고 Gradle을 이용하여 JAR 파일을 만드는 과정에서 여러 클래스들이 JAR에 포함되었는지를 확인해야 할 것 같습니다. 명령어를 이용하여 실행 가능한 JAR 파일을 만들려면 gradle bootJar 명령어를 사용하는 것이 일반적입니다. 이 명령어는 Spring Boot에서 제공하는 BootJar 태스크를 실행하고, 해당 클래스가 포함된 실행 가능한 JAR 파일을 build/libs 디렉터리 하위에 생성합니다.

다음 단계를 시도해 보시기 바랍니다:

  1. 명령 프롬프트 또는 터미널을 열고, 프로젝트 디렉터리로 이동합니다.
  2. gradle bootJar 명령어를 실행하여 실행 가능한 JAR 파일을 생성합니다.
  3. 생성된 JAR 파일이 build/libs 디렉터리 내에 있는지 확인합니다.
  4. 생성된 JAR 파일을 java -jar 명령어로 실행해 봅니다.

아마도 IntelliJ IDEA 등의 IDE를 사용하여 JAR 파일을 직접 생성하신 것으로 보이는데, 그 과정에서 Spring Boot의 내장된 JAR 파일 형식에 필요한 다른 설정들이 누락될 수 있습니다. 따라서 IDE 보다는 Gradle을 사용하여 JAR 파일을 빌드하시는 것을 권장드립니다.

그래도 문제가 해결되지 않는다면 .jar 파일 내용을 직접 확인하여 Main-Class가 포함되어 있는지, 그리고 META-INF/MANIFEST.MF 파일의 내부 설정이 올바른지를 다시 한 번 확인해 볼 필요가 있습니다.

해당 조치를 취한 후에도 문제가 계속된다면, 클래스 패스를 올바르게 설정했는지, 그리고 필요한 모든 클래스 파일과 리소스가 JAR 파일 안에 포함되어 있는지를 다시 검토해야 할 것입니다.

추가로, 만약에 Spring Boot의 다른 설정이나 실행 방법에 대해 더 자세히 알고 싶으시다면 아래 링크에서 Spring Boot Reference Documentation을 참고하시면 좋을 것 같습니다.
- Executable Jar 생성 관련 문서:
Spring Boot Reference Documentation - Creating an Executable Jar with Gradle
- Manifest 설정 관련 문서:
Spring Boot Reference Documentation - Launcher Manifest

해당 문서들이 han127kr님의 문제 해결에 도움이 되길 바랍니다.

han127kr님의 프로필 이미지
han127kr

작성한 질문수

질문하기