【问题标题】:Maven compilation fails when class becomes inner class (although Eclipse is good)?当类成为内部类时,Maven编译失败(尽管Eclipse很好)?
【发布时间】:2013-07-05 19:16:38
【问题描述】:

我有一堂课:

public class Stuff implements OtherStuff<BigInteger>

使用 Eclipse 和 Maven 完美构建。但是,我真的希望这个类成为一个内部类,但是当我这样做时:

public class ParentStuff {
.
.
.
    public static class Stuff implements OtherStuff<BigInteger>

Eclipse 构建完美,但现在 Maven 告诉我 OtherStuff 是一个无法识别的令牌。当 Stuff 是它自己的类时,它仍然在同一个项目中,所以 OtherStuff 必须可用,有什么想法吗?

我已经用 Java 1.7.0_05 + Maven 3.0.4 复制了这个,希望迁移到最新版本可以解决我的问题,Java jdk1.7.0_25 + Maven 3.0.5。我的解决方法是将 Stuff 实现为它自己的类,但它确实应该是一个内部类。

感谢您的宝贵时间。

更新:

我发现当我删除时:

import a.b.c.OtherStuff

并在我的内部类中使用合格的引用,Eclipse 和 Maven 都很高兴:

public class ParentStuff {
.
.
.
    public static class Stuff implements a.b.c.OtherStuff<BigInteger>

虽然,我仍然认为导入应该可以正常工作。

【问题讨论】:

  • 从某处导入OtherStuff
  • 您显示的代码没有问题。您需要提供更多详细信息。
  • 类和内部类的OtherStuff导入相同
  • 也许我应该改变这篇文章的标题,我认为这是一个 Maven 错误,在 Eclipse 中构建一切都很好,此外,我现在有相同的类和内部类项目,但编译器告诉我 OtherStuff 仅在内部类中无法识别。如果 OtherStuff 被类识别,为什么不被内部类识别?
  • 请注意,Eclipse 有自己的编译器。它不使用 JDK 中的 javac 来编译类,但 Maven 可以。我已经遇到了 Eclipse 编译正常的问题,而 Maven 上的 javac 没有。但它是复杂的泛型有界类型,早在 2007 年(在 JDK5 上)。你的情况看起来很简单,应该是别的。

标签: java eclipse maven compiler-errors inner-classes


【解决方案1】:

你的内部类中有一个内部类吗?您可能遇到了编译器错误:

http://bugs.sun.com/view_bug.do?bug_id=6707323

将 import 语句从类的顶部移动解决了这个问题的事实暗示了这个错误。

【讨论】:

  • 将在周一检查是否仍有解决方法,感谢您的指点。
  • 我在内部类 IC 中有一个内部枚举 IIE。按照您引用的错误中的解决方法,我删除了 IIE 的导入,而是使用限定符 IC.IIE,现在我的代码可以编译。感谢您的帮助。
  • 别担心!几天前我自己遇到了这个问题,并在寻找答案时发现了你的问题。这让我发疯了......如果你不能相信你的编译器,你还能相信谁!?
猜你喜欢
  • 2011-09-27
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多