XPathFactory#newInstance() не удалось создать XPathFactory для объектной модели по умолчанию: http://java.sun.com/jaxp/xpath/dom

Мое приложение выдает ошибку xpathfactory в AIX, которая возникает в этой строке кода. XPathFactory xpf = XPathFactory.newInstance();. Но оно отлично работает в Windows. Из данных в Интернете и через код Системное свойство сначала проверяется, если не найдено, то jaxp.properties. appnode.tra.Но в AIX это не работает. Как распечатать журналы jaxp, и я хочу, чтобы он работал без добавления внешних банок в путь к классам? (В jaxp.properties я установил свойство как javax.xml.xpath. XPathFactory: http://java.sun.com/jaxp/xpath/dom=com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl)


person prathyusha magam    schedule 17.03.2020    source источник
comment
Пожалуйста, отредактируйте свой пост и добавьте немного форматирования. Также укажите версию Java, которую вы используете в AIX, и укажите точное сообщение об ошибке, которое вы получите.   -  person Lorinczy Zsigmond    schedule 18.03.2020


Ответы (1)


Я предполагаю, что вы используете IBM JDK, и его реализация XPath по умолчанию отличается от com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl, что совершенно законно.

В JDK9 есть метод XPathFactory.newDefaultInstance(), поэтому вам больше не нужно знать имя фабрики по умолчанию.

В качестве альтернативы попробуйте посмотреть, что загружается, если вы не устанавливаете никаких системных свойств и ничего не имеете в пути к классам.

person Michael Kay    schedule 17.03.2020
comment
Да, мы используем IBM JDK. У удаленной системы есть jdk 8, и мы не можем обновить ее. Как я могу узнать, что загружается? Я запускал отдельное приложение Java как в Windows, так и в aix. Класс .jaxp.xpathfactoryimpl загружается из xml.jar, тогда как мы удалили xml.jar из нашего домашнего приложения bw java. - person prathyusha magam; 18.03.2020
comment
Возможно, вам следует попытаться создать экземпляр org.apache.xpath.jaxp.xpathfactoryimpl, если он доступен, или com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl в противном случае. Не думайте, что вам нужно использовать механизм JAXP factory.newInstance() — вы можете создавать экземпляры этих классов напрямую, если это более удобно. - person Michael Kay; 18.03.2020