【问题标题】:Project throwing multiple compilation errors exception项目抛出多个编译错误异常
【发布时间】:2014-08-29 09:48:19
【问题描述】:

我使用 spring.io 指南中的 gradle 构建文件在带有 intellij 13.0.1 的 ubuntu 上选择了一个 spring-boot 项目。我的 /opt 文件夹中有一些 groovy 和 gradle 但切换到 gvm 所以我当前的 groovy 是:

joseph@do-enr-pc-2:~$ groovy --version
Groovy Version: 2.3.6 JVM: 1.8.0_20 Vendor: Oracle Corporation OS: Linux
joseph@do-enr-pc-2:~$ echo $GROOVY_HOME
/home/joseph/.gvm/groovy/current

这是一个简单的项目来测试它的外观。所有需要的文件都在pastie.org

当我使用 java 运行我的项目时,我得到以下信息:

joseph@do-enr-pc-2:/home/joseph/micro-smpp-client-java$ ./gradlew springBoot && java build/libs/micro-smpp-client-0.1.0.jar --stacktrace
Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties.
Deprecated dynamic property: "mainClass" on "task ':springBoot'", value: "net.myproject.smpp...".
:springBoot UP-TO-DATE                     

 BUILD SUCCESSFUL

 Total time: 2.813 secs
 Error: Could not find or load main class build.libs.micro-smpp-client-0.1.0.jar

但是当我用 groovy 运行它时,我有以下内容:

 joseph@do-enr-pc-2:/home/joseph/micro-smpp-client-java$ ./gradlew springBoot && groovy build/libs/micro-smpp-client-0.1.0.jar --stacktrace
 Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties.
 Deprecated dynamic property: "mainClass" on "task ':springBoot'", value: "net.myproject.smpp...".
 :springBoot UP-TO-DATE                     

 BUILD SUCCESSFUL

 Total time: 3.934 secs
 org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
 /home/joseph/micro-smpp-client-java/build/libs/micro-smpp-client-0.1.0.jar: 1: unexpected char: 0x5 @ line 1, column 3.
 PK
 ^

 1 error

根据我的理解,一些 .class 显然在我的 springBoot 执行生成的可能的之前已经存在,所以我将 Application.groovy 重命名为 AppStarter.groovy 但它没有任何区别。

如何解决谢谢!!

编辑应用@Dave Syer 的建议

在运行./gradlew bootRun 之后,下面是我的输出:

 Deprecated dynamic property: "mainClass" on "task ':springBoot'", value:  "net.myproject.smpp.client...".    
:compileJava UP-TO-DATE                    
:compileGroovy UP-TO-DATE      
:processResources UP-TO-DATE      
:classes UP-TO-DATE      
:findMainClass                 
:bootRun FAILED 

:bootRun FAILED                                     

 FAILURE: Build failed with an exception.

 * What went wrong:
 Execution failed for task ':bootRun'.
 > No main class specified

 * Try:         
 Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

运行/gradlew build && java -jar build/libs/*.jar 后,我得到了:

 Deprecated dynamic property: "mainClass" on "task ':springBoot'", value:  "net.myproject.smpp.client...".
 :compileJava UP-TO-DATE                    
 :compileGroovy UP-TO-DATE     
 :processResources UP-TO-DATE      
 :classes UP-TO-DATE      
 :jar                 
 :bootRepackage FAILED          

  FAILURE: Build failed with an exception.

  * What went wrong:
  Execution failed for task ':bootRepackage'.
  > Unable to find main class

  * Try:        
  Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

【问题讨论】:

    标签: java spring groovy intellij-idea spring-boot


    【解决方案1】:

    我认为您的“springBoot”任务实际上并没有做任何事情(它是空的)。可能你是打算这样做的?

    springBoot {
       mainClass = "net.myproject.smpp.client.Application"
    }
    

    配置Spring Boot插件,然后

    $ ./gradlew bootRun
    

    $ ./gradlew build && java -jar build/libs/*.jar
    

    构建一个 jar 并运行它。

    编辑:并确保你的主类不在默认包中(如果你做对了,只要你的应用程序中只有一个主类,你甚至不需要在 springBoot 闭包中声明它)。

    【讨论】:

    • 我已根据您的建议更新了我的帖子。我绝对没有做对的事情
    • 您仍然有一个名为“springBoot”的空任务(这无济于事)。我不认为你更新了馅饼,所以我不知道你现在在做什么。
    • 哦,对了,我认为这是一个误解。根据github.com/spring-guides/gs-uploading-files/issues/3,我认为 springBoot 任务应该是这样的。请告诉我如何使用或不使用 springBoot 任务。谢谢这是我的第一个 spring/gradle 项目所以我还是有点困惑
    • 我不确定这个问题是否相关(它被标记为已解决,build.gradle 的最终版本有效)。也许您需要分享一个完整的项目?
    • 你好@Dave 谢谢你的时间。请在drive.google.com/file/d/0B7n5DCctwtb3ZUxxTGJuMHZUTUk/… 找到一个 sts 项目我已移至 sts,它从 sts“作为 Spring Boot 应用程序运行”运行,但不能使用带有 gradle 包装器的命令行运行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2011-06-02
    相关资源
    最近更新 更多