У меня есть проект java 8 spring 5 / spring ws 3. Он работает в tomcat 8. Он был перенесен из более старых версий Spring и использует конфигурацию xml веб-сервисов. Когда я запускаю приложение, я получаю следующую ошибку
ОШИБКА: [May-04 15: 03: 25,263] web.context.ContextLoader - Ошибка инициализации контекста org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping # 0 ': создание bean-компонента не выполнено; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping]: конструктор сгенерировал исключение; вложенное исключение - java.lang.ExceptionInInitializerError
Этот bean-компонент создается Spring и специально не вызывается моим приложением. Я проверил код здесь
и посмотрел на все вызываемые конструкторы, но все еще не мог понять, что могло пойти не так. Кто-нибудь когда-нибудь видел это? Или есть идеи, на что я мог бы посмотреть, чтобы отследить ошибку?
Спасибо
Обновлено: нужно было добавить последнее исключение
Вызвано: java.lang.ExceptionInInitializerError в org.springframework.xml.xpath.XPathExpressionFactory.createXPathExpression (XPathExpressionFactory.java:73) в org.springframework.ws.soap.addressing.version.AbstractAddressingVersion.createNormalizedExpression (AbstractAddressingVersion.java:116) в org.springframework.ws.soap.addressing.version.AbstractAddressingVersion. (AbstractAddressingVersion.java:88) на org.springframework.ws.soap.addressing.version.Addressing200408. (Addressing200408.java:36) в org.springframework.ws.soap.addressing.server.AbstractAddressingEndpointMapping.initDefaultStrategies (AbstractAddressingEndpointMapping.java:107) в org.springframework.ws.soap.addressing.server.AbstractAddressingEndpointMapping. (AbstractAddressingEndpointMapping.java:98) в org.springframework.ws.soap.addressing.server.AbstractActionEndpointMapping. (AbstractActionEndpointMapping.java:38) в org.springframework.ws.soap.addressing.server.AbstractActionMethodEndpointMapping. (AbstractActionMethodEndpointMapping.java:34) в org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping. (AnnotationActionEndpointMapping.java:60) в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newInstance (Constructor.java:408)
Изменить 2: Последняя строка кода, которая выполняется, это org.springframework.xml.xpath.XPathExpressionFactory.java:36
Это призывает org.springframework.xml.xpath.Jaxp13XPathExpressionFactory.createXPathExpression () со следующими данными
выражение = нормализовать-пробел (wsa: To) namespaces = ["wsa" -> "http://schemas.xmlsoap.org/ws/2004/08/addressing"]
У меня есть точка останова в Jaxp13XPathExpressionFactory.createXPathExpression (), но она никогда не попадает. Озадаченный, почему это так, он говорит, что не может найти класс, но класс находится в том же пакете, что и класс, его вызывающий.
Редактировать 3. Он действительно находит класс, точки останова в intellij работали не так хорошо. Ошибка, похоже, вызвана
jar: file: ... / saxon9he-9.2.1.5.jar! /META-INF/services/javax.xml.xpath.XPathFactory: 2: Недопустимый синтаксис файла конфигурации




Простой ответ в конце. Была старая зависимость maven, вызывающая проблему. Я обновил saxon9he v9.2.1.5 до Saxon-HE v9.8.0-11, и ошибка больше не возникает, и мое приложение запускается без проблем.