2010-03-31 18 views
1

有没有人听说过覆盖太多的Java类?也许这个问题只与黑莓开发有关,但我想知道它是否也是Java的一个问题。覆盖太多类的Java/BlackBerry编译错误

比方说,我有以下几点:

LabelField lblTitle = new LabelField(title) { 
    protected void paint(Graphics graphics) { 
     graphics.setColor(0x00FFFFFF); 
     graphics.clear(); 
     super.paint(graphics); 
    } 
}; 

LabelField lblSubTitle = new LabelField(releaseYear + ", " + rating) { 
    protected void paint(Graphics graphics) { 
     graphics.setColor(0x00FFFFFF); 
     graphics.clear(); 
     super.paint(graphics); 
    } 
}; 

此代码的工作。然而,我注意到,在整个我的项目在许多不同类型的多次重写paint()方法,我收到错误:

I/O Error: Cannot run program "jar": CreateProcess error=2, The system cannot find the file specified 

我唯一的解决方案迄今是清理我的GUI代码.. 。最小化并重用它。也许它发生这种事情的好处是,我可以在我的课程中全面创建GUI代码时不那么小心。

无论如何,我只是想知道有没有人听说过这个。如果你有兴趣阅读更多关于我一直面临的问题,请查看以下链接:

BlackBerry Java Development Forums

回答

3

这是不太可能的,你重写paint()次数得到您报告的错误。看起来这个错误是由于一个构建(编译)错误导致无法创建jar的。因此,您应该仔细查看由编译器/构建工具报告的错误消息。

如果这不起作用,您可以尝试通过“分而治之”来找到错误的原因,如下所示:注释掉您覆盖的所有地方paint()。如果问题消失,请取消这些覆盖的一半并重试。如果问题回到评论的一半(并继续递归)。否则,如果问题仍然存在,请回复上半部分并取消下半部分的注释(并继续递归)。

即使您有很多地方可以覆盖paint(),这种类型的二进制搜索将会很快收敛。例如,如果paint()被重写256次,则只需要8次递归迭代就可以找出导致问题的一个。