Предполагая, что согласно иерархии классов stati c вы ожидаете, что com.sun.crypto.provider.AESCipher$General
будет действительным подклассом javax.crypto.CipherSpi
, вы имеете дело с дублирующимися классами на пути к классам - как бы вы их ни получали.
compileInclude является хорошим кандидатом для включения большего количества кода, чем вы хотите, в путь к классам, т.е. дублирование классов, которые в противном случае могли бы проходить через обычный механизм загрузки классов.
Что, к сожалению, это сообщение об ошибке не говорит вам это загрузчик классов, который загружает каждый упомянутый класс. И, скорее всего, это суперкласс, который дублирует. Обычно вы можете прочитать сообщение об ошибке, как
com.sun.crypto.provider.AESCipher$General
не может быть преобразовано в javax.crypto.CipherSpi
, загруженное из загрузчика классов A - однако, оно может быть преобразовано в javax.crypto.CipherSpi
из загрузчика классов B.
К сожалению, в этом случае вам придется найти загрузчики классов A и B для себя, но если вы будете искать расположение CipherSpi
в любом месте на вашем пути к классам, вы сможете найти его. Обычно он уже предоставлен, и вы не должны приносить его сами.