当前,我们需要将应用程序从Grails 2.x迁移到Grails3.x。

我们对该应用程序了解不多,但是在过去的v2中,它在Java类中使用了Groovy类。

升级到v3后,这似乎不再起作用。在Java类中包含Groovy代码将返回此代码

...: error: cannot find symbol
      line of code with the error
                                                            ^
  symbol:   variable MyGroovyClass
  location: class MyJavaClass


MyJavaClass

public class MyJavaClass {
  public void x() { MyGroovyClass.test(); }
}

MyGroovyClass

class MyGroovyClass {
  static void test() { ... }
}

最佳答案



将所有Java和Groovy源代码置于src/main/groovy/下,这是大多数Grails应用程序要做的简单事情。这样一来,Groovy联合编译器就可以将它们全部编译为一个单元,因此您可以在Groovy和Java类之间具有双向依赖性。可以配置对单独目录的支持,但是它涉及一些复杂性,实际上并不会给您带来任何好处,这就是为什么约定使用src/main/groovy /的原因。

10-04 18:24