我遇到了一个特殊的构建情况,其中java项目在eclipse中编译但在构建机器上失败(使用JDK 1.6的Ant 1.8.2)
编译在名为'DestinationList'的类上失败,该类是具有内部类的内部类。结构类似于下面。
public class MappingDetail {
public class DestinationList extends AbstractGrowingScrollTable {
public class DestinationListRow {
}
}
}
使用上面列出的类,编译失败,抱怨它无法找到'AbstractGrowingScrollTable'。如果我删除内部内部类'DestinationListRow',编译成功。如果我将'DestinationList'移动到它自己的代码文件,编译也会成功。
这里发生了什么?因为我有一个解决方案,所以我有兴趣。我不明白为什么会失败。
'AbstractGrowableScrollTable'在一个单独的jar中,但是这个jar肯定在类路径上,实际上打开了详细的日志记录,我可以看到该类实际上是由javac发现的。摘录如下。注意它最后的日志列表,它确实加载了AbstractGrowableScrollTable。
[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)]