【问题标题】:Eclipse not recognizing generated classEclipse 无法识别生成的类
【发布时间】:2019-08-12 01:22:47
【问题描述】:

我使用 Maven 插件在我的项目中生成类。然而,即使在尝试从项目构建路径中显式填充它之后,eclipse 也无法识别它。它说,

“AbcBaseListener 无法解析为类型”

项目自动构建也已开启。

【问题讨论】:

  • 你能添加你生成的AbcBaseListener.java的标题吗?它存在于哪个包中?
  • 你可以在截图中看到,它在target->gtenerated-sources->antlr4下。
  • 不,我很好奇生成的 .java 里面是什么
  • @GyroGearless 我现在已经编辑了截图。
  • 感谢@GyroGearless 我找到了原因,我将其更新为 Aaron 的答案。

标签: java eclipse maven eclipse-plugin


【解决方案1】:

检查两件事:

1) 这里的重要提示是“类文件夹”。 Eclipse 需要 .class 文件,源代码将被忽略。

要解决此问题,请将此插件添加到您的 POM:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>target/generated-sources/</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

并更新项目(Maven -> Update ...)。

另一种选择是手动将另一个源文件夹添加到构建路径,但每当 m2e 从 POM 更新项目配置时,它就会丢失。

2)确保您生成的文件有包名;

grammar Abc 之后在您的 g4 文件中使用以下代码;

@header {
    package antlr4;
}

【讨论】:

  • 我试过这个,但没有用。 (我更新了有问题的屏幕截图)。您能否详细说明您的答案?
  • 好的,我找到了原因,有多种原因,第一个是从您的解决方案中解决的,第二个是生成的文件没有创建包名。谢谢:)
猜你喜欢
  • 2016-08-06
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 2012-04-19
  • 2015-12-11
相关资源
最近更新 更多