Следующий невинный вызов API вызывает сбой всего веб-приложения Джерси.Сортировка списка бросает ArrayIndexOutOfBoundsException
@Path("/sortlist")
public class SortList {
@GET
public void sort() {
List<Dog> test = new ArrayList<>();
test.add(new Dog("test"));
test.add(new Dog("blah"));
test.sort(Comparator.comparing(Dog::getName));
}
class Dog {
private String name;
public String getName() { return name; }
public Dog(String name) { this.name = name; }
}
}
Он бросает
javax.servlet.ServletException: Servlet.init() for servlet jersey-serlvet threw exception
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)
root cause
java.lang.ArrayIndexOutOfBoundsException: 20343
org.objectweb.asm.ClassReader.<init>(Unknown Source)
Но почему? Даже синхронизация операции сортировки не влияет. Может ли это быть ошибкой в одной из следующих технологий? Вы можете дублировать эту проблему?
- Tomcat 7.0.73
- Джерси 1.19.3
- Jetty 9.4.0.v20161208
- ASM 5.0.4
Ну что трассировка стека выглядит как исключение в конструкторе 'ClassReader', а не вашего класса ... Что заставляет вас думать, что есть что-нибудь сделать с вашим' сортировки) 'метода (? –
Поскольку этот метод сам по себе вызывает сбои приложения, ничего другого. Видимо, Джерси не поддерживает Java 8 достаточно хорошо. Я разместил решение ниже. – JasperJ