当前位置: 首页 > 知识库问答 >
问题:

Spring靴:无法从以下候选人中找到单个主类

高朝明
2023-03-14

我已经生成了一个Spring Boot web应用程序,使用Spring初始化器,嵌入式Tomcat,Thymeleaf模板engine.Technologies使用:Spring Boot1.4.2.RELEASE,Spring4.3.4.RELEASE,Thymeleaf2.1.5.RELEASE,Tomcat Embed 8.5.6,Maven 3,Java8

我有一个Spring靴应用程序,有以下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]

共有3个答案

糜野
2023-03-14

为了消除spring boot应用程序入口点的歧义,可以在Gradle构建文件中添加以下指令

springBoot {
    mainClassName = 'your.org.bla.TestKt'
}
鄢修德
2023-03-14

通过start-class属性定义单个主类

<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>

或通过配置文件

<profiles>
        <profile>
            <id>profile1</id>
            <properties>
                <spring.boot.mainclass>com.may.Application1</spring.boot.mainclass>
            </properties>
        </profile>
        <profile>
            <id>profile2</id>
            <properties>
                <spring.boot.mainclass>com.may.Application2</spring.boot.mainclass>
            </properties>
        </profile>
</profiles>

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>${spring.boot.mainclass}</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
劳亦
2023-03-14

如果您有多个主类,则需要在每个配置文件中显式配置主类:

<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靴:重新包装

 类似资料:
  • 就像标题中提到的,我有一个Spring Boot项目。试图从我的IDE中启动项目时,它说,找不到主类。 我在这里发现了一个相对等价的问题:Spring Boot程序找不到main类 errormessage如下所示:“Fehler:Hauptklasse de.main.main konnte nicht gefunden oder geladen Werden”大致翻译为:“Error:main

  • 问题内容: 我试图从命令promopt运行一个示例Java应用程序,但出现以下错误: 我用来尝试运行此应用的命令是: 所有相关文件都位于当前工作目录中(.java,.class和.jar文件) 我用来构建.class文件的命令如下(有2个.java文件): 再次从同一工作目录运行-的内容(或多或少): 我试图以C#开发人员的身份学习Java,所以我在编程概念方面拥有深厚的背景,整个Java工具链目

  • 我试图在spring boot repository类中执行此查询,但console显示错误''邮递员也显示: 查询存储库

  • 我试图在spring boot应用程序中作为servlet容器运行undertow,我遵循了所有关于它的说明,但从日志来看,tomcat似乎是web服务器。 以下是日志: 21-03-17 00:15:45.481INFO[,][restartedMain]o.s.b.w.embedded.tomcat.TomcatWebServer:Tomcat初始化端口:8080(超文本传输协议) 2021-

  • 问题内容: 我在src / main / webapp / VAADIN / themes / mytheme /中为我的VAADIN应用程序自定义了主题,文件为mytheme.scss和styles.scss。当在web.xml中将vaadin productionMode部署参数设置为false时,一切正常。当我将参数设置为true时,突然Vaadin找不到我主题的资源,并不断抱怨: 我没有/

  • 我有一个简单的Java项目,当我在Eclipse环境中执行它时,它可以工作。但是当我尝试将它导出到Runnable Jar时,我收到以下错误: 我阅读了其他帖子,建议创建一个MANIFEST.MF文件,指定我所做的主类。它位于MyProjectFolder/META-INF/MANIFEST.MF,它包含以下信息: 我的主类如下: 有人知道我错过了什么吗?非常感谢任何帮助。 谢谢。