在我的 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/