[SPRING] Spring Boot : 다음 후보들 중에서 하나의 메인 클래스를 찾을 수 없습니다.
SPRINGSpring Boot : 다음 후보들 중에서 하나의 메인 클래스를 찾을 수 없습니다.
Spring Initializer, Tomcat, Thymeleaf 템플릿 엔진을 사용하여 Spring Boot 웹 애플리케이션을 생성했습니다. 사용 된 기술 : Spring 부트 1.4.2.RELEASE, Spring 4.3.4.RELEASE, Thymeleaf 2.1.5.RELEASE, Tomcat Embed 8.5.6, Maven 3, Java 8
스프링 부트 앱이 있습니다. 다음 2 가지 클래스가 있습니다.
@Profile("!war")
@SpringBootApplication
@Import({SecurityConfig.class ,PersistenceConfig.class, ServiceConfig.class})
public class BookApplication {
public static void main(String[] args) {
SpringApplication.run(BookApplication.class, args);
}
}
@Profile("war")
@Import({SecurityConfig.class ,PersistenceConfig.class})
@SpringBootApplication
public class BookApplicationWar extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(BookApplicationWar.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(BookApplicationWar.class, args);
}
}
나는이 명령으로 전쟁을 일으킨다.
mvn clean package -DskipTests -Dspring.profiles.active=pebloc,war -DAPP-KEY=pebloc
하지만이 오류가 발생했습니다.
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) on project book: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage failed: Unable to find a single main class from the following candidates [com.tdk.BookApplication, com.tdk.BookApplicationWar] -> [Help 1]
해결법
-
==============================
1.둘 이상의 기본 클래스가있는 경우 각 프로파일의 기본 클래스를 명시 적으로 구성해야합니다.
둘 이상의 기본 클래스가있는 경우 각 프로파일의 기본 클래스를 명시 적으로 구성해야합니다.
<profiles> <profile> <id>profile1</id> <properties> <spring.boot.mainclass>com.SomeClass</spring.boot.mainclass> </properties> </profile> <profile> <id>profile2</id> <properties> <spring.boot.mainclass>com.SomeOtherClass</spring.boot.mainclass> </properties> </profile> </profiles>
...
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.5.2.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <mainClass>${spring.boot.mainclass}</mainClass> </configuration> </execution> </executions> ... </plugin>
spring-boot : repackage를 참조하십시오.
-
==============================
2.플러그인 구성에서 주 클래스를 간단히 하드 코딩 할 수 있습니다.
플러그인 구성에서 주 클래스를 간단히 하드 코딩 할 수 있습니다.
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <mainClass>your.main.class.MainClass</mainClass> </configuration> </execution> </executions> </plugin>
-
==============================
3.때때로 mvn clean을하지 않고 mvn install을 할 때이 오류가 발생합니다.
때때로 mvn clean을하지 않고 mvn install을 할 때이 오류가 발생합니다.
-
==============================
4.
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) on project book: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:repackage failed: Unable to find a single main class from the following candidates [com.tdk.BookApplication, com.tdk.BookApplicationWar]
다음 오류가 발생하는 한 가지 가능한 이유는 코드에서 하나 이상의 주요 메소드입니다. 스프링 부트는 같은 프로젝트의 모든 클래스에서 하나의 기본 메소드 만 허용합니다.
-
==============================
5.시작 클래스 속성을 통해 단일 메인 클래스 정의
시작 클래스 속성을 통해 단일 메인 클래스 정의
<properties> <start-class>com.may.Application</start-class> </properties>
또는, spring-boot-maven-plugin에서 메인 클래스를 정의하십시오
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.may.Application</mainClass> </configuration> </plugin> </plugins> </build>
-
==============================
6.public static void main (String [] args)를 가진 클래스가 여러 개있는 경우 응용 프로그램을 검사하십시오. 필요없는 것을 제거하십시오. 특히 https://start.spring.io/로 프로젝트를 생성하면 main 메소드가있는 클래스가 함께 제공됩니다.
public static void main (String [] args)를 가진 클래스가 여러 개있는 경우 응용 프로그램을 검사하십시오. 필요없는 것을 제거하십시오. 특히 https://start.spring.io/로 프로젝트를 생성하면 main 메소드가있는 클래스가 함께 제공됩니다.
main 메소드를 가진 모든 클래스가 필요하다면, 애플리케이션 시작시에 pom에 언급하여 어느 것이 봇 트랩 될 것인지 명시 적으로 언급하십시오.
-
==============================
7.나는 같은 오류가 있었다. main을 포함하는 Application 클래스의 이름을 foo.java에서 bar.java로 변경하고 정리하고 업데이트했습니다. 그래서 나는 단 하나의 메인을 가지고있다.
나는 같은 오류가 있었다. main을 포함하는 Application 클래스의 이름을 foo.java에서 bar.java로 변경하고 정리하고 업데이트했습니다. 그래서 나는 단 하나의 메인을 가지고있다.
대상 폴더 아래에서 이전에 생성 된 클래스 foo.class를 삭제하면 오류가 사라졌습니다.
from https://stackoverflow.com/questions/42840576/springboot-unable-to-find-a-single-main-class-from-the-following-candidates by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring에서 웹 서비스로부터 이미지를 보내는 방법 (0) | 2019.03.21 |
---|---|
[SPRING] Spring : 중첩 예외는 java.lang.NoClassDefFoundError : org / aopalliance / aop / Advice입니다. (0) | 2019.03.21 |
[SPRING] Spring 3.1 PropertySourcesPlaceholderConfigurer 및 조건부 가져 오기 (0) | 2019.03.20 |
[SPRING] JUnit 테스트를 생성 할 때 그러한 메소드가 없습니다. (0) | 2019.03.20 |
[SPRING] Spring 부트가 로그를 콘솔에 인쇄하지 못하게 함 (0) | 2019.03.20 |