XMLEventReader возвращает STAX
Я использую XMLEventReader для анализа больших XML-файлов, и он отлично работает в одном проекте, но когда я импортирую тот же класс с тем же импортом в другом проекте, он плохо анализирует XML и дает STAX Event
,
Ниже мой код:
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader eventReader = factory.createXMLEventReader(new FileReader(exportedFilePath));
Я отлаживал и проверял eventReader и в проекте, где работает, находится свойство, а в проекте, где не работает, есть м.
Я не могу поймать исключение, потому что это тот же класс и тот же импорт..
Вот импорт:
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.Namespace;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
2 ответа
Это должно помочь:
System.setProperty("javax.xml.stream.XMLInputFactory", "com.sun.xml.internal.stream.XMLInputFactoryImpl");
Это может быть вызвано проблемой Classpath.
Возможно, другой класс с таким же именем загружен до вашего класса (это может быть даже внутри фреймворка или в среде выполнения), который мешает загрузке вашего упомянутого класса, например, другая версия вашего синтаксического анализатора stax.
У вас есть три варианта:
Попытайтесь выяснить версию синтаксического анализатора StAX, присутствующего в этой среде, и скомпилируйте в него свой код
Используйте собственный загрузчик классов / контейнер для вашей библиотеки, который будет гарантировать, что загружена правильная версия,
попытайтесь изменить порядок классов, чтобы ваша библиотека стояла первой - хотя это может повредить систему в другом месте, поэтому я не очень рекомендую.