Ci sono errori occasionali di StackOverFlowError nella produzione relativi a un'operazione di Sottolista. Qualcuno ha mai visto qualcosa di simile prima e sa cosa potrebbe causarlo?java.util.Sublist throwing StackOverFlowError
Questo è il codice che viene chiamato che innesca l'errore:
FacesContext context = FacesContext.getCurrentInstance();
String newViewID = context.getViewRoot().getViewId();
if (newViewID != null) {
if (breadCrumbs.contains(newViewID)) {
// Trims the list upon going back to allow for multiple back button requests.
// This is lightweight and not intended for a complex circular navigation.
breadCrumbs = breadCrumbs.subList(0, breadCrumbs.indexOf(newViewID) + 1);
} else {
breadCrumbs.add(newViewID);
}
}
Il risultato:
Caused By: java.lang.StackOverflowError
at java.util.SubList$1.<init>(AbstractList.java:688)
at java.util.SubList.listIterator(AbstractList.java:687)
at java.util.SubList$1.<init>(AbstractList.java:688)
at java.util.SubList.listIterator(AbstractList.java:687)
...
Quale versione del JDK stai usando? La sottocartella da open JDK non sembra avere questo problema di ciclo infinito: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/AbstractList.java #SubList –
Stackoverflow è un ottimo posto dove chiedere informazioni su StackOverFlowError. – gawi
C'è il motivo per cui qui sotto (sottolista della lista mutabile), ma quello che sembra che tu voglia fare è rimuovere gli elementi finali dalla lista delle briciole e non creare una nuova vista della vecchia lista con loro nascosti (cosa fa la sottolista). –