java - 在 Java 之前编译 Groovy 后,Grails 应用程序(配置文件rest-api)陷入困惑

标签 java spring-boot grails gradle groovy

在我的 Grails 应用程序中,我明确地使其在 Java 之前编译 Groovy,通过添加以下内容,

sourceSets {
    main {
        groovy {
            // override the default locations, rather than adding additional ones
            srcDirs = ['src/main/groovy', 'src/main/java']
        }
        java {
            srcDirs = [] // don't compile Java code twice
        }
    }
}

build.gradle

添加此代码片段后,应用程序开始提示主类,

...
...
:findMainClass FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':findMainClass'.
> Illegal null value provided in this collection: [null]

当我运行gradle clean build时。

我尝试提供如下所示的主类,

springBoot {
    mainClass = "foo.bar.Application" // The one in the grails-app/init
}

但尚未遇到另一个错误。

...
...
:classes
:findMainClass
:bootRunError: Could not find or load main class foo.bar.Application

任何帮助将不胜感激。

版本:

  • Gradle,3.4.1
  • Grails,3.2.8
  • Groovy,2.4.7
  • Java,1.8

最佳答案

Java 本身无法使用 Groovy 类。在实现互操作性之前,它们必须被编译为 JVM 字节码。如果你想在java中使用可重用的groovy代码,最简单的方法是将groovy库独立打包成JAR文件(jvm字节码)并将其作为JAR依赖项使用。执行此操作时,您还需要 groovy sdk jar,以便 java“理解”groovy 签名。

关于java - 在 Java 之前编译 Groovy 后,Grails 应用程序(配置文件rest-api)陷入困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48400334/

相关文章:

java - 我不明白为什么 Hibernate 创建一个带有两个连接的查询

java - 为什么我在下面的代码 "The method getHeader(String) is undefined for the type HttpRequest"中收到此错误?

spring - 在grails中使用Spring Security Core时如何设置密码大小限制?

java - 比较行不起作用,为什么?我该如何解决?

java - 在 sql 查询中使用 java.sql.Timestamp 对象

spring-boot - 不推荐使用 Spring Boot 1.4 VelocityEngineUtils

spring - 如何使用 Spring Boot 注册 servlet?

grails - 如何在Grails中创建子查询

grails - Groovy 中的安全导航操作符

java - 应用程序、远程脚本和安全/混淆