Spring Boot: переименование основного класса

Я новичок в Spring и Spring Boot, но использую его как шаблон.

Файл Main.java частично содержит следующее:

package com.example;

@Controller
@SpringBootApplication
public class Main {

}

К сожалению, мне нужно импортировать другой класс, который называется Main, и использовать его в этом классе. Другой класс находится в Jar, и я действительно не хочу его перекомпилировать, поэтому я подумал, что лучше всего было бы переименовать этот Main.

Однако, когда я это сделаю (переименовав его в JavaGettingStarted), плагин Maven для Spring Boot выйдет из строя:

[ERROR] Failed to execute goal
org.springframework.boot:spring-boot-maven-plugin:2.0.0.RELEASE:repackage
(default) on project java-getting-started: Execution default of goal
org.springframework.boot:spring-boot-maven-plugin:2.0.0.RELEASE:repackage
failed: Unable to find a single main class from the following
candidates [com.example.JavaGettingStarted, com.example.Main] -> [Help
1]

Является ли Main своего рода дефолтным? Могу я его поменять?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
3 366
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема не в имени класса, а в том, что плагин Spring Boot Maven обнаружил два класса с помощью основного метода. Либо удалите один из этих основных методов, либо явно настройте плагин maven:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <version>2.0.0.RELEASE</version>
  <configuration>
    <mainClass>Your class name here</mainClass>
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>repackage</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Я могу порекомендовать иметь только один основной метод в одном классе, а не несколько из них. Это упрощает работу с Spring Boot (соглашения).

khmarbaise 17.03.2018 12:30

Другие вопросы по теме