在Java

时间:2018-01-23 11:13:59

标签: java spring-boot grails gradle groovy

在我的Grails应用中,我明确指出在Groovy之前编译Java,添加此内容,

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

添加此代码段后,应用程序开始抱怨Main类

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

1 个答案:

答案 0 :(得分:0)

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