Я столкнулся с этой проблемой при переносе моего WebApp с Tomcat 6 на Tomcat 8. На Tomcat6 и Tomcat7 мое WebApp запустилось бы нормально, но на Tomcat8 я получил бы это исключение (кажется, что T6 и T7 загружают классы по алфавиту, но T8 не't - https://stackoverflow.com/a/26642798/1864614).
Проблема заключалась в том, что у меня было 2 версии класса
org.codehaus.jackson.map.ObjectMapper
В ответ на @wild_nothing я проверил дерево зависимостей, чтобы вывести список всех зависимостей на
org.codehaus.джексон В моем случае проблема заключалась в том, что у меня было несколько версий библиотек, предоставляющих этот класс:
- org.codehaus.jackson: jackson-mapper-lgpl: jar: 1.5.0
- org.codehaus.jackson: jackson-core-lgpl: jar: 1.5.0
- org.codehaus.jackson: jackson-mapper-asl: jar: 1.8.2
- org.codehaus.jackson: jackson-core-asl: jar: 1.8.2
Мое решение состояло в том, чтобы исключить более старые версии (1.5.0) и оставить только версию 1.8.2
<dependency>
<groupId>cfm.foo</groupId>
<artifactId>jive</artifactId>
<exclusions>
<exclusion>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-lgpl</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-lgpl</artifactId>
</exclusion>
</exclusions>
</dependency>
- в данном случае jive зависело от более старой версии 1.5.0