barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)
Показаны сообщения с ярлыком IllegalArgumentException. Показать все сообщения
Показаны сообщения с ярлыком IllegalArgumentException. Показать все сообщения

понедельник, 28 октября 2013 г.

Java 7: Comparison method violates its general contract

После перехода с Java 6 на 7 одна из используемых приложением библиотек стала валиться с:
java.lang.IllegalArgumentException: Comparison method violates its general contract!
Причина кроется в том, что в семерке переработана имплементация алгоритма сортировки, используемая в java.util.Arrays.sort и java.util.Collections.sort, и в случае некорректной реализации интерфейса Comparable она может генерировать данное исключение. Под некорректной понимается реализация, неконсистентная с реализацией equals() (например, если для некоторых эквивалентных объектов она возвращает значение, отличное от 0). Найти эту информацию можно в заметках о совместимости Java 7. 
Выход - переписать реализацию Comparable (в моем случае - не вариант, т.к. библиотека сторонняя и закрытая) либо воспользоваться системным свойством "java.util.Arrays.useLegacyMergeSort", позволяющим переключиться на старую имплементацию сортировки (сказать по правде, не пробовал, т.к. просто вернулся на JDK 6).
ЗЫ Спасибо http://www.yossale.com/?p=355.

вторник, 29 мая 2012 г.

Spring Security: java.lang.IllegalArgumentException: Unsupported configuration attributes: [isAuthenticated()]

Проблема:

При использовании в xml-конфигурации следующего тега:
<intercept-url pattern="/**" access="isAuthenticated()" />
при инициализации Spring Security в логи валится ошибка:
java.lang.IllegalArgumentException: Unsupported configuration attributes: [isAuthenticated()]
Решение:

У родительского тега <http> установить атрибут use-expressions:

<http auto-config="true" access-denied-page="/login.jsp?accessDeniedError=1" use-expressions="true">  
        <intercept-url pattern="/**" access="isAuthenticated()" />
...