Ошибка сборки Java / BlackBerry из-за слишком большого количества классов - PullRequest
1 голос
/ 31 марта 2010

Кто-нибудь когда-нибудь слышал о переопределении слишком большого количества классов в Java? Возможно, эта проблема связана только с разработкой BlackBerry, но мне было интересно, если это тоже проблема в Java.

Допустим, у меня есть следующее:

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

1 Ответ

3 голосов
/ 31 марта 2010

Маловероятно, что количество переопределений paint() приведет к сообщаемой вами ошибке. Кажется, что ошибка происходит из-за ошибки сборки (компиляции), которая препятствует созданию jar-файла. Поэтому вам следует попытаться более внимательно посмотреть на сообщения об ошибках, сообщаемые вашим компилятором / средством сборки.

Если это не сработает, вы можете попытаться найти причину ошибки с помощью «разделяй и властвуй» следующим образом: закомментируйте все места, где ваше переопределение paint(). Если проблема исчезнет, ​​раскомментируйте половину этих переопределений и повторите попытку. Если проблема возвращается, прокомментируйте половину этой половины (и продолжайте рекурсивно). В противном случае, если проблема не устранена, прокомментируйте первую половину и раскомментируйте вторую половину (и продолжайте рекурсивно).

Даже если у вас есть много мест, где вы переопределяете paint(), этот тип бинарного поиска будет сходиться довольно быстро. Например, если paint() было переопределено 256 раз, вам нужно всего лишь восемь рекурсивных итераций, чтобы найти ту, которая вызывает проблему.

...