在Groovy类的IntelliJ中“类已存在”错误

时间:2016-08-02 14:11:17

标签: intellij-idea groovy

在IntelliJ(2016.2和之前的版本)中,我们将Groovy类标记为红色,并显示错误“class already exists”。 我认为我们可以排除原因是存根生成,因为这是停用的。

可能它是在我们的星座中引起的:我们已经将已编译的groovy(和java)类包含在一个注册为依赖项的jar中。

依赖项MyProduct.jar包含com.mycompany.MyGroovyClass

我们的来源包含com.mycompany.MyGroovyClass

如果依赖项已在Test-Scope中注册,则错误消失,在所有其他范围内出现错误。

但是,在我们的结构中,我们有包含在编译范围内的编译类,因为我们要避免每个开发人员需要编译所有类(我知道后台编译的能力) ,但是我们有一个星座阻止它工作)。

我们在com.mycompany.MyJavaClass中没有错误,它在源代码和MyProduct.jar中也存在。

关于我们如何解决这个问题的任何想法?

4 个答案:

答案 0 :(得分:7)

我们遇到了同样的问题,似乎IntelliJ注册了Java类,还注册了Groovy类,因此它显示了该消息(BTW,我们正在使用Maven项目)。 / p>

所以我们最终转到目标文件夹 - >右键单击 - >标记目录为 - >排除。然后,此设置将保存在IML文件中,并且不会再次发生。

希望它对您也有用! 干杯

答案 1 :(得分:5)

我正在使用gmavenplus-plugin:1.5target/generated-sources/generated-sources/main标记为“已排除”后,错误消失。我甚至做了“使缓存无效并重新启动”,它会持续设置。这很棒。 Intellij 2017.1.5

答案 2 :(得分:1)

我们有两种方法可以解决此问题

  1. 排除存根目录

目标文件夹->生成源-> groovy-stubs->右键单击主文件夹->将目录标记为->排除

  1. 从gmaven插件中删除generateStubs目标

从gmavenplus插件中删除<goal>generateStubs</goal>

答案 3 :(得分:0)

确保将src文件夹标记为Sources Root,并对测试文件夹进行相同操作

然后删除目标文件夹(最有可能标记为黄色),不用担心它不会从您的项目中删除任何代码

如果问题仍然存在,请转到文件->使缓存无效/重新启动