Java java.lang.ClassCastException: some.package.SomeClass нельзя преобразовать в some.package.SomeClass

Я вызываю мыльную веб-службу со структурой, которую мы генерируем из wsdl, используя wsdl2java. один из пакетов/классов — это some.package.SomeClass. Как только мы получаем результат этой службы в some.package.SomeClass, мы вызываем банку, для которой в качестве входных данных используется some.package.SomeClass. Они действительно одного класса, так как я могу легко решить эту проблему. Я знаю, что могу изменить ввод jar на другое имя пакета/объекта, но это действительно объект, который также создается из wsdl, поэтому я не хочу его менять. Как я могу преодолеть эту ошибку таким образом, чтобы класс, сгенерированный из wsdl, и входные данные для jar могли быть одним и тем же именем пакета и класса?

Любая помощь будет здорово!

Заранее спасибо!

Вероятно, вы видите классы, загруженные разными загрузчиками классов, которые уже являются разными классами, даже если они имеют одно и то же полное имя.

Tom Hawtin - tackline 05.06.2019 22:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
109
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не используйте сгенерированный класс, если он упакован в предоставленную вам банку. просто отбросьте то, что вы создали, и используйте классы из банки...

Я исключил из wsdl из cxf-codegen-plugin/wsdl2java, и теперь классы не генерируются, я импортировал банку, но теперь по какой-то странной причине java не включает классы/пакеты из банки. Есть идеи, почему?

Brian 05.06.2019 23:39

что еще вы изменили вместе с этим исключением?

NiNiCkNaMe 06.06.2019 01:16

Ничего, я просто сказал cxf-codegen-plugin исключить из генерации 1 конкретный класс. Когда я пытаюсь скомпилировать свой код, он теперь жалуется, что класс не может быть найден. Однако я вижу это там, в банке, в моих зависимостях maven. Похоже, что загрузчик классов по-прежнему считает, что классы, сгенерированные wsdl2java, отличаются от классов из jar, даже если они имеют точно такой же пакет и имя класса, потому что они являются одним и тем же классом.

Brian 06.06.2019 14:53

Другие вопросы по теме