【问题标题】:Maven clean + build causes project in Eclipse to show errors until clean in EclipseMaven clean + build 导致 Eclipse 中的项目显示错误,直到在 Eclipse 中清理
【发布时间】:2012-03-14 08:47:29
【问题描述】:

我们的开发环境中出现了一种非常奇怪的行为,这与我们在不同操作系统上的所有开发人员一致。

我们在开发环境中有大约 20 多个 Maven (3.0.4) 项目,它们都是 Eclipse (Indigo) 中的开放项目,sonatype m2e (0.12.0) 像往常一样处理依赖项。 (m2e 1.0 给我们带来的问题多于解决方案)

在我们所有 20 多个项目中,一个项目表现得很奇怪。 在该项目上执行mvn clean install 时,即使 Maven 成功通过,它也会导致 4 个 java 文件(在单元测试中,如果有任何区别)在 Eclipse 中显示错误。

尽管打开文件并在错误的类引用上按 F3(打开声明)发现类没有问题,但错误属于“SomeNameOfClass 无法解析为类型”类型。

mvn clean 是问题所在,如果我们只运行 mvn install 这不会发生。

Eclipse 的项目 -> Clean 清除错误,一切正常。

不是实际上阻止我工作或类似的操作问题,我可以解决它只需在 Eclipse 中清理,我只是讨厌每次都这样做时间,我无法忍受我的项目中的红色 X,即使它们没有效果。

我真的很好奇为什么会发生这种情况,为什么特别是这 4 个类?为什么为什么为什么? :)

【问题讨论】:

  • 你能给出更多关于这些测试类的精度吗?是否有其他测试类的行为符合预期?他们有特定的路径吗?
  • 如前所述,您应该提供更多详细信息。这些文件是否已生成?
  • 文件是普通的java文件,不是生成的。它们以 Test 为后缀,并包含一些用 @Test 注释的方法,就像普通的 JUnit 类一样。被引用的类显示为 cannot be resolved to a type 是抽象的
  • 另外需要注意的是,虽然 java 文件 X 中的错误是 Y cannot be resolved to a type,但 Y 中没有错误。
  • 您是否将项目导入为 Java 或 Maven 项目?您可以通过查看 Package Explorer 中的小项目图标来判断这一点:Java 右上角的 J 或 Maven 左上角的 M。

标签: java eclipse maven


【解决方案1】:

不久前我们遇到了完全相同的问题。我们有超过 20 个项目给出了同样的错误。根据我们所做的调查,我们得出结论,当maven clean install 运行时,eclipse 会丢失类文件并认为其中一些是未定义的。 我们的解决方案是在命令行发出以下命令:

mvn eclipse:clean
mvn clean install
mvn eclipse:eclipse

【讨论】:

  • 如果使用 m2e 或 m2eclipse mvn eclipse:... 不应再使用。更好的方法是在 Maven - 上下文菜单中进行更新项目配置。
  • @GETah 虽然您的建议消除了错误,但它搞砸了 .project 和 .classpath。这些文件在我们的源代码控制中,在每次构建时更改它们不是一个好的选择。我想我可以做到这一点,并且在一切都执行 git checkout -- .projectgit checkout -- .classpath 之后,但这似乎有点麻烦。
  • @Enrico 我认为将 Eclipse 设置置于版本控制之下并不是一个好主意。您应该只将源代码与 pom 文件一起置于源代码控制之下。
  • @GETah 在源代码管理中拥有 .project 和 .classpath 可以同步每个人的设置,它允许我们的非 Java 开发人员简单地导入项目并让一切正常工作..
  • 我选择了一个正确的答案,因为如果您不是源代码控制 .project 和 .classpath...
【解决方案2】:

现在可以在Run configurationRefresh 选项卡下指定项目完成后需要刷新。您必须检查Refresh resources upon completion 并选择下面的行为。

【讨论】:

    【解决方案3】:

    我发现在 maven 中有一个 jar 作为“测试”范围会导致“未解析的类型”错误,除了将其从 pom 文件中的测试范围中取出之外,我还没有发现任何东西可以修复它。

    【讨论】:

      【解决方案4】:

      如果您想通过 UI 消除错误,请执行以下步骤:

      在 Eclipse 中选择您的项目并执行 ALT + ENTER 或右键单击项目 -> 构建路径 -> 配置构建路径

      选择 Java Build Path 选项和 Source 选项卡。

      选择显示错误的节点,例如src/main/java 并点击 Remove 并点击 Apply

      再次使用添加文件夹选项添加相同(已删除)的节点,然后单击应用并关闭按钮。

      错误应该已经消失了!

      【讨论】:

        猜你喜欢
        • 2015-02-09
        • 2013-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-22
        • 2013-12-04
        • 2018-03-07
        相关资源
        最近更新 更多