LinkageError JAXB 2.0-> 2.1 (Tomcat)

Если у вас есть статические ячейки (то есть небольшой фиксированный набор статических ячеек, а не динамические ячейки с прототипами ячеек, где вы контролируете, сколько типов ячеек будет динамически генерироваться), вам не следует реализовывать какие-либо UITableViewDataSource методы. Просто создайте IBOutlet ссылки для различных элементов управления, которые есть в ваших статических ячейках, и обновите их, как если бы вы вообще не использовали UITableView.


Кроме того, если бы вы использовали динамические ячейки, вы бы никогда не дали двум разным прототипам ячеек один и тот же идентификатор повторного использования. Цель идентификатора повторного использования состоит в том, чтобы сообщить ему, какой прототип ячейки использовать, и поэтому не имеет смысла давать нескольким прототипам ячеек один и тот же идентификатор.

8
задан bluish 6 June 2012 в 09:19
поделиться

3 ответа

Java 6u10 включает JAXB 2.1, поэтому его вообще не нужно включать (он имеет был включен с 6u4).

Прямо сейчас похоже, что у вас есть конфликт между JAXB, включенным в веб-приложение, и JAXB в комплекте, который поставляется с JRE. Вы можете попробовать удалить банку JAXB из вашего веб-приложения ( C: /software/tomcat6/webapps/messaging/WEB-INF/lib/jaxb-impl-2.1.5.

8
ответ дан 5 December 2019 в 15:26
поделиться

Рекомендуемый способ - определить переменную среды JAVA_ENDORSED_DIRS. Тогда Tomcat будет использовать это свойство Java:

-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS

для загрузки одобренных jar-файлов. Итак, создайте папку, поместите туда jaxb-api.jar v2.1 и определите переменную среды, чтобы она указывала на эту папку.

Это лучше, чем использование глобального одобренного каталога, потому что это не влияет на всю JVM и вам не нужно повторять процесс, когда обновляется JRE.

2
ответ дан 5 December 2019 в 15:26
поделиться

Действительно ли возможно, что у Вас есть jaxb банки в каталоге $JAVA_HOME/jre/lib/ext? Вот определение программы начальной загрузки:

Начальная загрузка - Этот загрузчик класса содержит основные классы среды выполнения, обеспеченные виртуальной машиной Java плюс любые классы из файлов JAR, существующих в каталоге System Extensions ($JAVA_HOME/jre/lib/ext). ОТМЕТЬТЕ - Некоторый JVMs может реализовать это как больше чем один загрузчик класса, или это не может быть видимо (как загрузчик класса) вообще.

(Принятая форма здесь)

Ищите все места, где Вы имеете jaxb банки в системе (по крайней мере, jaxb-API и jaxb-impl) и удостоверяетесь, что они находятся или в каталоге WEB-INF/lib Вашего веб-приложения или в каталоге lib кота.

1
ответ дан 5 December 2019 в 15:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: