0
次の無邪気なAPI呼び出しは、Jersey Webアプリケーション全体をクラッシュさせます。リストをソートすると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
- 突堤9.4.0.v20161208
- ASM 5.0.4
まあ、スタックトレースは、例外がクラスではなく、ClassReaderのコンストラクタにあるように見えます。どうすれば 'sort()'メソッドと何か関係があると思いますか? –
この方法だけでアプリケーションがクラッシュするため、他に何もありません。明らかに、JerseyはJava 8を十分にサポートしていません。私は以下のソリューションを掲載しました。 – JasperJ