В 9.8.0.8 класс net.sf.saxon.dom.DOMNodeWrapper
имеет только 1144 строки, поэтому трассировка стека, показывающая строку 1178, предполагает наличие некоторой проблемы с версиями.
Класс DOMNodeWrapper
впервые был представлен в 9.5 (ранееон назывался NodeWrapper
), и номера строк отличаются от номеров в текущем источнике 9.5, поэтому я подозреваю, что вы загрузили какой-то дополнительный релиз ветви 9.5.Другие номера строк в трассировке стека также согласуются с этим значением 9,5.
Это, конечно, не объясняет проблему, но может дать подсказку.
Моим непосредственным инстинктом было то, что болеепосле 9.5 лет мы могли бы исправить ошибку многопоточности.DOM не является поточно-ориентированным, поэтому Saxon уделяет большое внимание синхронизации своего доступа.Саксонская ошибка https://saxonica.plan.io/issues/2376 решает эту проблему.В ветке 9.5 это было впервые исправлено в техническом выпуске 9.5.1.11, поэтому возможно, что у вас нет этого патча.Я думаю, что было бы полезно выяснить, почему вы загружаете старую версию Saxon, и другой полезный аспект - выяснить, какая именно это версия (статический метод net.sf.saxon.Version.getProductVersion()
даст вам эту информацию).
Кстати, если вы используете многопоточный доступ к дереву DOM, вам следует спросить себя, является ли это хорошей идеей.Саксонский доступ к DOM медленнее в лучшие времена (по сравнению с JDOM и XOM, не говоря уже о собственной модели дерева Saxon), а отсутствие безопасности потоков и необходимость синхронизации делает его довольно плохим выбором в многопоточном приложении.
Также обратите внимание, что Saxon может синхронизировать свой собственный доступ к DOM, но не может синхронизироваться со сторонним кодом, который также может использовать DOM.