2015-12-24 8 views
-1

Мы используем commons-codec для шифрования паролей, используя функцию org.apache.commons.codec.digest.Md5Crypt.md5Crypt.org.apache.commons.codec.digest.Md5Crypt.md5Crypt. исключение происходило под linux, но отлично под окнами

Он отлично работает в среде Windows, но в CentOS исключается исключение.

У нас есть тестовые серверы 3 centOS: один - centOS7, один - centOS6.7, а один - centOS7 минимальный. Самое странное, что код работает на сервере centOS7, но не на двух других. Единственная разница между ними - ОС. Те же коты, те же самые jdks, одинаковые сборки.

Нужны ли какие-либо другие вещи под Linux?

Сообщение об исключении:

java.lang.IllegalAccessError: tried to access method org.apache.commons.codec.digest.DigestUtils.getMd5Digest()Ljava/security/MessageDigest; from class org.apache.commons.codec.digest.Md5Crypt

ответ

0

вы проверили банку? и наличие библиотеки? Возможно, он был удален для некоторых неясных причин безопасности/патентов/экспорта?

или, по крайней мере, что-то изменилось. Это проблема несовместимости: см. То, что: java.lang.IllegalAccessError: tried to access method

Или вы уже (загрузили) этот класс, потому что у вас есть несколько несовместимых экземпляров. Попробуйте найти его в своих пакетах (функция звонящего или вызванная)

но почему бы не использовать библиотеку напрямую?

import java.security.*; 
MessageDigest md = MessageDigest.getInstance("MD5"); 
byte[] thedigest = md.digest(_originebyte); 
+0

Спасибо за ответ. Я проверил вопрос, который вы упомянули, затем я снова проверил все детали своей среды, обнаружил, что версия трех кошек отличается. Версия jdks была 1,7, но котята были 8 и 7. 8 отлично работали для кода, но 7 нет. Итак, теперь я меняю кошек с 7 на 8. Но я все еще смущен, что заставило это случиться, я буду копать его глубже. –

+0

Привет, вы были правы, я обнаружил, что другой общедоступный кодек был включен сторонним файлом jar в папке WEB-INF/lib, которой не управляет maven. Я удалил его, и теперь он работает нормально. Спасибо! –