ClassCastException при кастинге к тому же классу

Конечно, MailItem.EntryID - это шестнадцатеричное представление идентификатора двоичной записи, хранящегося в свойстве PR_ENTRYID MAPI.

51
задан Paolo Forgia 16 August 2017 в 03:14
поделиться

2 ответа

Я не совсем слежу за вашим описанием потока программы, но обычно, когда вы получаете ClassCastExceptions, вы не можете объяснить, что вы загрузили класс одним загрузчиком классов, а затем пытаетесь привести его к тому же классу, загруженному с помощью другой загрузчик классов. Это не будет работать - они представлены двумя различными объектами Class внутри JVM, и приведение не будет выполнено.

Существует статья о загрузке классов в WebSphere . Я не могу сказать, как это относится к вашему приложению, но есть ряд возможных решений. Я могу думать по крайней мере:

  1. Изменить загрузчик класса контекста вручную. Требует, чтобы вы действительно могли получить ссылку на соответствующий загрузчик классов, что может быть невозможно в вашем случае.

     Thread.currentThread (). SetContextClassLoader (...);
    
  2. Убедитесь, что класс загружен загрузчиком классов выше в иерархии.

  3. Сериализация и десериализация объекта. (Тьфу!)

Хотя, вероятно, есть более подходящий способ для вашей конкретной ситуации.

58
ответ дан 7 November 2019 в 10:17
поделиться

Объекты классов были загружены в разные загрузчики классов, поэтому экземпляры, созданные в каждом из классов, являются рассматривается как «несовместимый». Это распространенная проблема в среде, где используется много разных загрузчиков классов и объекты передаются. Эти проблемы могут легко возникнуть в среде Java EE и портала.

12
ответ дан 7 November 2019 в 10:17
поделиться
Другие вопросы по тегам:

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