【问题标题】:Unable to find main class :bootRepackage找不到主类:bootRepackage
【发布时间】:2014-04-27 00:16:29
【问题描述】:

我的 gradle 构建有问题。我使用Spring网站提出的标准(https://spring.io/guides/gs/rest-service/),但是当我尝试使用gradle build时,我得到了这个错误:

它不适用于这个 gradle,但是当我使用另一个(我在学校时使用的)时,它可以完美运行。

【问题讨论】:

  • 你真的有一个 main 方法(在指南中它在 Applicationclass 中)吗?
  • 我有一个在 /main/java/hello/Application.class :package main.java.hello;公共类应用程序 { public static void main() { System.out.println("Test"); } }
  • 是“/main/java”还是“./src/main/java”?也许你可以把你的代码放在 github 上或其他什么地方?
  • main() 方法不需要String[] args吗?
  • 是这样吗,谢谢大家 :-)

标签: java spring rest gradle spring-boot


【解决方案1】:

有两种可能

  1. 您的源目录不在正确的位置(使用 sourceSets 指令解决此问题。您的源目录应类似于 src/main/java/your/package
  2. 添加这个来指明你的主类在哪里

    springBoot {
         mainClass = "hello.FileUploader"
    }
    

我很确定它是 1。

【讨论】:

  • 对我来说是 2。:) 一旦我决定插入 Spring Boot,我没有意识到我需要配置主类。仍然在 Gradle 和 Spring Boot 中摸索...
  • 对我来说它是第一名:我的路径中没有 java -- 我有 src/main/my/package 而不是 src/main/java/my/package
  • 我正在使用build.gradle 联合编译Java 和Groovy,配置如下:stackoverflow.com/a/22164339/185034,换句话说,我移动了sourceSets。 #2 为我工作。
【解决方案2】:

这也发生在我身上。

我对@9​​87654321@文件的位置感到困惑:我认为它应该位于src/main/java/hello,因为它在创建这个子的指令之后被提及目录结构。

它应该放在包含src文件夹的根文件夹中。一旦我这样做并从根文件夹中调用“gradle build”而不是按照指南指示的“./gradlew build”,构建就成功了。

我没有执行 gradle 的标准安装,只是下载了二进制文件,也许这就是“./gradlew build”对我来说失败的原因。

【讨论】:

    【解决方案3】:

    我也有这个问题,这里我解决了:

    如果您的项目只是一个将在其他项目中使用的模块,请使用org.springframework.boot:spring-boot-starter 而不是org.springframework.boot:spring-boot-starter-web

    或者在gradle中设置主类:

    mainClassName = 'your.package.MainClass'
    

    或者只是禁用bootRepackage

    bootRepackage {
        enabled = false
    }
    

    【讨论】:

    • 我刚刚禁用了重新打包,因为在我的情况下它只是共享项目
    【解决方案4】:

    我通过指定编码解决了这个问题。可能是因为我在 IDE 中编写了代码。

    java -Dfile.encoding=UTF-8 -jar build <filename>.jar
    

    【讨论】:

      【解决方案5】:

      我知道这是一篇很老的帖子。但我在尝试构建我的第一个 spring-boot 应用程序 (https://spring.io/guides/gs/spring-boot/#scratch) 时遇到了这个问题。 所以教程中提到的 pom.xml 的位置是不正确的。您需要将其放在 src 文件夹之外。 所以这是最终的目录结构 - /workspace/src/main/java/hello/HelloController.java /workspace/src/main/java/hello/Application.java /workspace/pom.xml

      【讨论】:

        【解决方案6】:

        如果 build.gradle 文件所属的当前项目中没有定义主类,但您想出于某种目的启动它,例如 sprint 集成测试。这样做:

        添加

        bootRepackage {
            mainClass = 'your.app.package.Application'
        }
        

        在build.gradle中(在apply plugin: 'spring-boot'这一行之后,因为需要加载插件)修复问题。

        【讨论】:

          【解决方案7】:

          您的项目中没有 main 方法(否则插件会找到一个)。 main 方法有一个非常具体的签名,因此请检查您是否拥有public static void main(String[] args)

          【讨论】:

          • 这不是真的,我遇到了同样的问题,我的项目中有一个 public static void main(String[] args)。
          猜你喜欢
          • 2015-07-07
          • 2018-12-03
          • 2019-01-28
          • 2013-12-18
          • 2016-09-13
          • 2015-07-15
          • 2011-03-01
          • 2012-08-19
          相关资源
          最近更新 更多