У меня есть веб-приложение, использующее Apache Common IO версии 2.4. Когда я развертываю это приложение на JBOSS 6.2.2, я получаю следующую ошибку:
Не удалось определить класс org.apache.commons.io.IOUtils в модуле "deployment.MyApp.war: main" из Service Module Loader: java.lang.SecurityException: подписчик класса org.apache.commons.io.IOUtils информация не соответствует информации подписчика других классов в одном пакете
Из-за этой ошибки загрузчик классов не загружает класс и, следовательно, получает NoClassDefFoundError: org/apache/commons/io/IOUtils во время выполнения. Я не уверен, как это разрешить, поскольку этот банку опубликован из фонда Apache. Я быстро проверил с jarsinger, который поставляется с JDK, и он говорит, как показано ниже.
jar без знака. (подписи отсутствуют или не поддаются анализу)
Команда, которую я запускаю: jarsigner -verify commons-io-2.4.jar
Кто-нибудь сталкивался с этой проблемой раньше? Я видел пару сообщений stackoverflow, никто не решил эту проблему.
Это происходит, когда классы, принадлежащие к одному и тому же пакету, загружаются из разных загрузчиков классов, а загруженные файлы jars имеют подписи, подписанные с разными сертификатами, или в вашем случае по меньшей мере один подписан, а один или несколько других - нет.
В JBoss EAP 6.2 commons-io предоставляется сервером, попробуйте удалить из вашей войны commons-io
банку.