Я пытаюсь десериализовать XML-файл, содержащий методы.
Фрагмент выглядит так:
XMLDecoder decoder = new XMLDecoder(os);
deSerializedObject = decoder.readObject();
decoder.close();
return deSerializedObject;
Когда XML-файл не содержит метода для каждого объекта. Он выбрасывает NoSuchMethodException @ readObject.
java.lang.NoSuchMethodException: не найден метод с добавлением имени
в java.beans.Statement.findMethod (Statement.java:454)
в java.beans.Statement.invokeMethodImpl (Statement.java:247)
на java.beans.Statement.access $ 000 (Statement.java:46)
в java.beans.Statement $ 1.run (Statement.java:130) в java.security.AccessController.doPrivileged (AccessController.java:284)
в java.beans.Statement.invokeMethod (Statement.java:127)
в java.beans.Expression.getValue (Expression.java:67) в java.beans.XMLDecoder $ SAXHandler.executeCommon (XMLDecoder.java:392)
в java.beans.XMLDecoder $ SAXHandler.execute (XMLDecoder.java:321)
в java.beans.XMLDecoder $ SAXHandler.endElement (XMLDecoder.java:286) в
org.apache.xerces.parsers.AbstractSAXParser.endElement (неизвестный источник)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement (Неизвестно
Источник)
в org.apache.xerces.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDispatcher.dispatch (Неизвестно
Источник)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument (Неизвестно
Источник)
в org.apache.xerces.parsers.XML11Configuration.parse (неизвестный источник) в
org.apache.xerces.parsers.XML11Configuration.parse (Неизвестный источник) в
org.apache.xerces.parsers.XMLParser.parse (Неизвестный источник) в
org.apache.xerces.parsers.AbstractSAXParser.parse (неизвестный источник)
в org.apache.xerces.jaxp.SAXParserImpl $ JAXPSAXParser.parse (Неизвестно
Источник) в org.apache.xerces.jaxp.SAXParserImpl.parse (Неизвестный источник)
на javax.xml.parsers.SAXParser.parse (неизвестный источник) на java.beans.XMLDecoder.readObject (XMLDecoder.java:662)
Проблема в том, что я не могу поймать это исключение. Как правильно обращаться с этим?
try{
deSerializedObject = decoder.readObject();
System.out.println("We are after read object");
}
catch (NoSuchMethodException e)
{
System.out.println("We are in catch block !!");
e.printStackTrace();
}
decoder.close();
return deSerializedObject;
Здесь ошибка: «Недоступный блок перехвата для NoSuchMethodException. Это исключение никогда не выдается из тела оператора try»
XML выглядит как
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0" class="java.beans.XMLDecoder">
<object class="java.util.ArrayList">
<void method="add">
<object class="InfoParameters">
<void property="Name">
<string>Jay</string>
</void>
<void property="Level">
<string>10</string>
</void>
</object>
<object class="InfoParameters">
<void property="Name">
<string>Hir</string>
</void>
<void property="Level">
<string>10</string>
</void>
</object>
</void>
</object>
</java>