2015-04-26 3 views
2

Я получаю исключение «Исключение в потоке» main «com.thoughtworks.xstream.io.StreamException: Невозможно создать XmlPullParser» при десериализации xml. Я добавил следующие DEPENDENCYКак избежать com.thoughtworks.xstream.io.StreamException: Не удается создать XmlPullParser во время десериализации?

xmlpull_1_0_5.jar 
xpp3_min-1.1.4.jar 
xstream-1.4.8.jar 

код теста:

import java.util.AbstractMap; 
import java.util.HashMap; 
import java.util.Map; 

import com.thoughtworks.xstream.XStream; 
import com.thoughtworks.xstream.converters.Converter; 
import com.thoughtworks.xstream.converters.MarshallingContext; 
import com.thoughtworks.xstream.converters.UnmarshallingContext; 
import com.thoughtworks.xstream.io.HierarchicalStreamReader; 
import com.thoughtworks.xstream.io.HierarchicalStreamWriter; 

public class Test { 

    public static void main(String[] args) { 

    Map<String, String> map = new HashMap<String, String>(); 
    map.put("name", "chris"); 
    map.put("island", "faranga"); 

    XStream magicApi = new XStream(); 
    magicApi.registerConverter(new MapEntryConverter()); 
    magicApi.alias("root", Map.class); 

    String xml = magicApi.toXML(map); 
    System.out.println("Result of tweaked XStream toXml()"); 
    System.out.println(xml); 

    magicApi.fromXML(xml); 
    // assert extractedMap.get("name").equals("chris"); 
    // assert extractedMap.get("island").equals("faranga"); 

    } 

    public static class MapEntryConverter implements Converter { 

    public boolean canConvert(Class clazz) { 
     return AbstractMap.class.isAssignableFrom(clazz); 
    } 

    public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { 

     AbstractMap map = (AbstractMap) value; 
     for (Object obj : map.entrySet()) { 
     Map.Entry entry = (Map.Entry) obj; 
     writer.startNode(entry.getKey().toString()); 
     Object val = entry.getValue(); 
     if (null != val) { 
      writer.setValue(val.toString()); 
     } 
     writer.endNode(); 
     } 

    } 

    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { 

     Map<String, String> map = new HashMap<String, String>(); 

     while (reader.hasMoreChildren()) { 
     reader.moveDown(); 

     String key = reader.getNodeName(); // nodeName aka element's name 
     String value = reader.getValue(); 
     map.put(key, value); 

     reader.moveUp(); 
     } 

     return map; 
    } 

    } 

} 

Am я misiing некоторая зависимость .Any помощь по этому вопросу будут оценены.

ответ

5

Я добавил xpp3_min-1.1.4c.jar вместо xpp3_min-1.1.4.jar программы .my начал работать

+0

Thoughtworks должен добавить правильное сообщение, указывающее на реальную проблему. Это помогает в ее разрешении. Над банкой решена проблема. –

0

Основной вопрос, который не сообщается в StackTrace, что есть недостающий ресурс в XStream 1.4.8

Вы можете обнаружить его только если вы присоедините 1.4.9 исходный код (1.4.8 исходный код странно недоступен) и отладки.

Реальная ошибка, которая никогда не отображается в

`` ` вызвано следующими причинами: org.xmlpull.v1.XmlPullParserException: ресурс не найден: /META-INF/services/org.xmlpull.v1.XmlPullParserFactory марка что парсер, реализующий XmlPull API, доступен; вложенное исключение: org.xmlpull.v1.XmlPullParserException: ресурс не найден: /META-INF/services/org.xmlpull.v1.XmlPullParserFactory убедитесь, что синтаксический анализатор, реализующий XmlPull API, доступен в org.xmlpull.v1.XmlPullParserFactory. newInstance (XmlPullParserFactory.java:278) на org.xmlpull.v1.XmlPullParserFactory.newInstance (XmlPullParserFactory.java:259) на com.thoughtworks.xstream.io.xml.XppDriver.createParser (XppDriver.java:57) на com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader (AbstractXppDriver.java:54) at com.thoughtworks.xstream.XStream.fromXML (XStream.java:1061) at com.thoughtworks.xstream.XStream.fromXML (XStream.java:1052) at tudelft.mmi.pn.duo.core.DUOModel.loadFromXml (DUOModel.java:289) at tudelft.mmi.pn.duo.core.DUOModel.getNewDUOModel (DUOModel.java:182) at domaineditor.extduomodel.ExtDuoModel. (ExtDuoModel.java:56) at domaineditor.actions.OpenFile.actionPerformed (OpenFile.java : 34) на javax.swing.AbstractButton.fireActionPerformed (AbstractButton.java:2022) в javax.swing.AbstractButton $ Handler.actionPerformed (AbstractButton.java:2348) в javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java : 402) в javax.swing.DefaultButtonModel.setPressed (DefaultButtonModel.java:259) на javax.swing.AbstractButton.doClick (AbstractButton.java:376) в javax.swing.plaf.basic.BasicMenuItemUI.doClick (BasicMenuItemUI .java: 833) at com.apple.laf.AquaMenuItemUI.do Нажмите (AquaMenuItemUI.java:157) в javax.swing.plaf.basic.BasicMenuItemUI $ Handler.mouseReleased (BasicMenuItemUI.java:877) в java.awt.AWTEventMulticaster.mouseReleased (AWTEventMulticaster.java:289) на Java. awt.Component.processMouseEvent (Component.java:6533) at javax.swing.JComponent.processMouseEvent (JComponent.java:3324) at java.awt.Component.processEvent (Component.java:6298) at java.awt. Container.processEvent (Container.java:2236) на java.awt.Component.dispatchEventImpl (Component.java:4889) на java.awt.Container.dispatchEventImpl (Container.java:2294) на java.awt.Component. dispatchEvent (компонент.Java: 4711) на java.awt.LightweightDispatcher.retargetMouseEvent (Container.java:4888) на java.awt.LightweightDispatcher.processMouseEvent (Container.java:4525) в java.awt.LightweightDispatcher.dispatchEvent (Container.java: 4466) at java.awt.Container.dispatchEventImpl (Container.java:2280) at java.awt.Window.dispatchEventImpl (Window.java:2746) at java.awt.Component.dispatchEvent (Component.java:4711) at java.awt.EventQueue.dispatchEventImpl (EventQueue.java:758) at java.awt.EventQueue.access $ 500 (EventQueue.java:97) at java.awt.EventQueue $ 3.run (EventQueue.java:709) at java.awt.EventQueue $ 3.run (EventQueue.java:703) at java.security.Acce ssController.doPrivileged (Native Method) в java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (ProtectionDomain.java:80) в java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (ProtectionDomain.java:90) в java.awt.EventQueue $ 4.run (EventQueue.java:731) в java.awt.EventQueue $ 4.run (EventQueue.java:729) в java.security.AccessController.doPrivileged (метод Native) в java.security.ProtectionDomain $ JavaSecurityAccessImpl. doIntersectionPrivilege (ProtectionDomain.java:80) на java.awt.EventQueue.dispatchEvent (EventQueue.java:728) на java.awt.EventDispatchThread.pumpOneEventForFilters (EventDispatchThread.java:201) в java.awt.EventDispatchThread.pump EventsForFilter (EventDispatchThread.java:116) на java.awt.EventDispatchThread.pumpEventsForHierarchy (EventDispatchThread.java:105) на java.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:101) в java.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:93) на java.awt.EventDispatchThread.run (EventDispatchThread.java:82)

`` `

реальный основной вопрос, как представляется, этот (известный) проблема

https://issues.apache.org/jira/browse/SMX4-581

+1

Я бы порекомендовал вам вытащить из ссылки ссылку дополнительную информацию о том, как решить проблему. – rghome

Смежные вопросы