Saxon XSLT 9.2 генерирует исключение NullPointerException для файла конфигурации в Eclipse STS

Я использовал процессор Xalan XSLT в Eclipse STS 3.7, но недавно перешел на Saxon 9.2 (Home Edition). В настройках Eclipse я переключил процессор и установил для JAR-файла значение saxon9he.jar, но без отладчика. Когда я выполняю преобразование из Eclipse, я продолжаю получать это исключение. Похоже, он жалуется на файл конфигурации edition.properties, но я проверил пакет Saxon, который я загрузил с двоичными файлами jar, и такого файла нет. Я также загрузил плагин Saxon Eclipse, чтобы посмотреть, является ли этот файл конфигурации частью плагина, но это не так.

К сожалению, у нас есть сторонний продукт, который использует Saxon внутри, поэтому я вынужден заставить его работать в Eclipse, чтобы убедиться, что наша интеграция с продуктом дает ожидаемые результаты, иначе я бы остановился на Xalan.

java.lang.NullPointerException
    at net.sf.saxon.Configuration.<clinit>(Configuration.java:231)
    at net.sf.saxon.TransformerFactoryImpl.<init>(TransformerFactoryImpl.java:36)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at javax.xml.transform.FactoryFinder.newInstance(FactoryFinder.java:147)
    at javax.xml.transform.FactoryFinder.find(FactoryFinder.java:187)
    at javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:102)
    at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.JAXPSAXProcessorInvoker.createTransformerFactory(JAXPSAXProcessorInvoker.java:92)
    at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.JAXPSAXProcessorInvoker.setAttributes(JAXPSAXProcessorInvoker.java:79)
    at org.eclipse.wst.xsl.jaxp.debug.invoker.PipelineDefinition.configure(PipelineDefinition.java:143)
    at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.Main.main(Main.java:72)
Exception in thread "main" java.lang.ExceptionInInitializerError
    at net.sf.saxon.TransformerFactoryImpl.<init>(TransformerFactoryImpl.java:36)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:102)
    at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.JAXPSAXProcessorInvoker.createTransformerFactory(JAXPSAXProcessorInvoker.java:92)
    at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.JAXPSAXProcessorInvoker.setAttributes(JAXPSAXProcessorInvoker.java:79)
    at org.eclipse.wst.xsl.jaxp.debug.invoker.PipelineDefinition.configure(PipelineDefinition.java:143)
    at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.Main.main(Main.java:72)
Caused by: java.lang.RuntimeException: Failed to load configuration defined in edition.properties
    at net.sf.saxon.Configuration.<clinit>(Configuration.java:277)
    ... 14 more
Caused by: java.lang.NullPointerException
    at net.sf.saxon.Configuration.<clinit>(Configuration.java:231)
    ... 14 more

person raffian    schedule 01.02.2012    source источник
comment
Google привел меня сюда: eclipse.org/forums/index.php/m/ 526450 и здесь можно найти обходной путь bugs.eclipse.org/ ошибки/show_bug.cgi?id=300480   -  person Kevan    schedule 02.02.2012
comment
Да, я это видел, но это было до того, как перезагрузка решила мою проблему, спасибо!   -  person raffian    schedule 02.02.2012


Ответы (2)


В Saxon было несколько ошибок, связанных с невозможностью загрузить файл edition.properties в таких средах, как Eclipse и eXist, которые выполняют загрузку классов с высокой настройкой. Посмотреть здесь:

https://sourceforge.net/tracker/index.php?func=detail&aid=3043783&group_id=29872&atid=397617

и эта ветка обсуждения:

http://saxon.markmail.org/thread/wwljuixdww6fhd7w

Насколько я знаю, проблема давно решена. Если у вас есть веская причина использовать ветку 9.2, используйте последнюю версию обслуживания в этой ветке, которая называется 9.2.1.5. В противном случае последняя версия Saxon — 9.4.0.2, а самая стабильная — 9.3.0.11.

И не стесняйтесь использовать список помощи Saxon (на Sourceforge), где вы всегда получите ответ от разработчиков Saxon. Спрашивая здесь, это дело случая, увидим ли мы публикацию или нет.

person Michael Kay    schedule 02.02.2012

Мне удалось заставить это работать после воссоздания конфигурации синтаксического анализатора Saxon XSLT в разделе «Настройки» и перезапуска Eclipse. Я полагаю, что Eclipse придерживалась какой-то старой конфигурации, которая могла привести к сбою инициализации Saxon. Работает сейчас, иди разберись..

person raffian    schedule 01.02.2012