강의

멘토링

로드맵

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

신박한님의 프로필 이미지
신박한

작성한 질문수

spring boot프젝에 main을 못 찾겠어요

작성

·

564

0

spring boot 프로젝트를 분석 중에 있습니다.

로컬에서 빌드해서 구동되고 접속 까지 확인을 했습니다.

그런데 소스를 보면 public static void main 을 찾을 수 없습니다.

war로 묶어 실행해 보아도 "기본 Manifest 속성이 없습니다"

라고 나옵니다. 이럴 경우에 검색해보니 main 위치를 설정해 주라고 하는데 소스에 main을 찾을 수가 없어요.

어떤 상황? 구조일까요? spring boot 프젝이 아닌걸까요? (상위 프젝 pom파일에 spring-boot-starter-web 이 dependency되어 있습니다.)

답변 1

0

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

Spring Boot 프로젝트에서 public static void main 메서드를 찾을 수 없는 경우, 몇 가지 가능한 시나리오가 있습니다.

  1. @SpringBootApplication 어노테이션이 적용된 클래스 내에 위치해야 합니다. 대부분의 Spring Boot 어플리케이션에서는 main 메서드가 이 클래스에 포함되어 있습니다. 이는 Spring Boot 어플리케이션의 진입점으로, SpringApplication.run(MyApplication.class, args);를 호출하여 Spring 어플리케이션을 구동시킵니다.

  2. 만약 Repackager를 사용하여 빌드하는 경우, Repackager.setMainClass() 메서드를 사용하여 main 클래스를 명시적으로 지정하지 않으면, ASM을 사용하여 public static void main(String[] args) 메서드가 있는 적합한 클래스를 찾으려고 시도합니다. 이 과정에서 적합한 클래스를 찾지 못하거나 여러 후보가 있는 경우 예외가 발생할 수 있습니다.

  3. 소스 코드 내부에 main 메서드는 존재하지만, 특정 빌드 설정 또는 프로젝트 구조상 빌드 및 실행 과정에서 해당 클래스가 올바르게 참조되지 않는 경우입니다. Maven이나 Gradle 등의 빌드 도구를 사용하는 경우, ‘src/main/java’ 아래에 해당 클래스가 위치해야 합니다.

주어진 설명만으로는 구체적인 상황을 파악하기 어렵습니다만, 상위 프로젝트의 pom.xml 파일에 spring-boot-starter-web이 의존성으로 추가되어 있다면, Spring Boot 프로젝트일 가능성이 높습니다. main 메서드가 포함된 클래스를 찾지 못하는 경우, 프로젝트의 빌드 설정을 다시 검토하거나 해당 클래스의 존재 여부를 확인해 보시길 권장합니다.

또한, IDE의 검색 기능을 사용하거나 전체 프로젝트에서 public static void main 키워드를 검색하면 해당 메서드를 포함하는 클래스를 찾는 데 도움이 될 수 있습니다.

신박한님의 프로필 이미지
신박한
질문자

상위 프로젝트의 pom.xml 파일 <modules> 에 등록된 <module> 프로젝트에spring-boot-starter-web이 의존성으로 추가되어 있습니다. 하지만 @SpringBootApplication나 main은 상위 프젝, 모듈프젝 모두에서 찾을수 없습니다. 구동시 내장 tomcat을 사용 않하는 것과 관련이 있을까요?

신박한님의 프로필 이미지
신박한

작성한 질문수

질문하기