我遇到了一种特殊的构建情况,java项目在eclipse中编译,但在构建机器上失败(Ant 1.8.2和JDK 1.6)
在名为“DestinationList”的类上编译失败,该类是具有内部类的内部类。结构如下所示。
public class MappingDetail {
public class DestinationList extends AbstractGrowingScrollTable {
public class DestinationListRow {
}
}
}
对于如上所述的类,编译失败,因为它无法找到“AbstractGrowingScrollTable”。如果删除内部类“DestinationListRow”,则编译成功。如果我将“DestinationList”移动到它自己的代码文件中,编译也会成功。
这是怎么回事?因为我有一份工作,所以我出于兴趣而问。我不明白为什么这会失败。
'AbstractPeragableScrollTable'在一个单独的jar中,但此jar肯定在类路径上,事实上打开了详细的日志记录,我可以看到该类实际上是在不久之后被javac找到的。摘录如下。注意在日志的最后一个列表中,它确实加载了AbstractMaragableScrollTable。
[javac] C:\Work\Decisiv\BUILD_AREA\code\source\APEI01\com\initech\sd\ap\ei01\ui\MappingDetail.java:551: cannot find symbol
[javac] symbol : class AbstractGrowingScrollTable
[javac] location: class com.initech.sd.ap.ei01.ui.MappingDetail
[javac] public class DestinationList extends AbstractGrowingScrollTable {
[javac] ^
[javac] [loading com\initech\sd\ks\ta01\resource\IResourceable.class(com\initech\sd\ks\ta01\resource:IResourceable.class)]
[javac] [loading com\initech\sd\za\rt01\resources\Resources.class(com\initech\sd\za\rt01\resources:Resources.class)]
[javac] [loading com\initech\sd\za\sh01\shared\Pair.class(com\initech\sd\za\sh01\shared:Pair.class)]
[javac] [loading com\initech\sd\za\ui\component\CheckBox.class(com\initech\sd\za\ui\component:CheckBox.class)]
[javac] [loading com\initech\sd\za\ui\component\Grid.class(com\initech\sd\za\ui\component:Grid.class)]
[javac] [loading com\initech\sd\za\ui\component\Image.class(com\initech\sd\za\ui\component:Image.class)]
[javac] [loading com\initech\sd\za\ui\component\Label.class(com\initech\sd\za\ui\component:Label.class)]
[javac] [loading com\initech\sd\za\ui\component\Row.class(com\initech\sd\za\ui\component:Row.class)]
[javac] [loading com\initech\sd\za\ui\component\layoutdata\GridLayoutData.class(com\initech\sd\za\ui\component\layoutdata:GridLayoutData.class)]
[javac] [loading com\initech\sd\za\ui\component\layoutdata\RowLayoutData.class(com\initech\sd\za\ui\component\layoutdata:RowLayoutData.class)]
[javac] [loading com\initech\sd\za\ui\component\properties\Alignment.class(com\initech\sd\za\ui\component\properties:Alignment.class)]
[javac] [loading com\initech\sd\za\ui\component\properties\Font.class(com\initech\sd\za\ui\component\properties:Font.class)]
[javac] [loading com\initech\sd\za\ui\component\table\ScrollTableColumn.class(com\initech\sd\za\ui\component\table:ScrollTableColumn.class)]
[javac] [loading com\initech\sd\za\ui\component\table\ScrollTableRow.class(com\initech\sd\za\ui\component\table:ScrollTableRow.class)]
[javac] [loading com\initech\sd\za\ui\resource\DefaultStyle.class(com\initech\sd\za\ui\resource:DefaultStyle.class)]
[javac] [loading com\initech\sd\za\ui\resource\ImageResources.class(com\initech\sd\za\ui\resource:ImageResources.class)]
[javac] [loading com\initech\sd\ui\cf\AbstractGrowingScrollTable.class(com\initech\sd\ui\cf:AbstractGrowingScrollTable.class)]
结果是一个编译器错误。
http://bugs.sun.com/view_bug.do?bug_id=6707323
问题内容: 我确实阅读了许多讨论内部类的主题,并且给人的印象是内部类可以访问封闭类的变量和方法。在下面的代码中,我有一个外部类和一个内部类,在测试类中,我创建了一个外部类的实例,然后从中创建了一个内部类的实例。但是我无法通过内部类引用访问String变量。救命? 问题答案: 内部类可以通过自己的方法访问外部类的方法和属性。看下面的代码:
我确实读过一些讨论内部类的主题,我的印象是内部类可以访问封闭类的变量和方法。下面我有一个外部类和一个内部类,在测试类中我创建一个外部类的实例,然后从它创建一个内部类的实例。但是,我无法通过内部类引用访问字符串变量a。帮忙?
问题内容: 我观察到外部类可以访问内部类的私有实例变量。这怎么可能?这是演示相同代码的示例代码: 为什么允许这种行为? 问题答案: 内部类只是一种将真正属于原始外部类的功能完全分开的方法。当你有两个要求时,可以使用它们: 如果是在单独的类中实现的,那么外部类中的某些功能将最为清晰。 即使在单独的类中,该功能也与外部类的工作方式紧密相关。 鉴于这些要求,内部类可以完全访问其外部类。由于它们基本上是外
问题内容: 我来自Java背景,当您声明内部类时,它是静态的,不能访问外部类的实例,或者它不是静态的,并且可以访问正在被访问的外部类的实例。进行操作。参见http://en.wikipedia.org/wiki/Inner_class#Types_of_nested_classes_in_Java 斯威夫特对此有什么概念吗?从测试中,我似乎无法访问的对象,但是我肯定做错了。 问题答案: AFAIK
为什么我不能这样做/是否有解决方法来实现这一点: 这两个编译错误是 > On
为什么<code>test