SimpleXML在Thread.getContextClassLoader()返回的类加载器可能失败之后抛出ClassNotFoundException

在一些设备上,我有这个错误:

W/ActivityThread: ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader()); D/dalvikvm: GC_CONCURRENT freed 1499K, 11% free 14469K/16119K, paused 2ms+3ms, total 41ms D/dalvikvm: WAIT_FOR_CONCURRENT_GC blocked 25ms I/SurfaceTextureClient: [0x517af630] frames:42, duration:1.290000, fps:32.550117 E/rkqpKRQuestApplicationListener: RxJavaHooks onError: java.lang.ClassNotFoundException: red.kometa.quest.common.entities.Paragraph$Part$Action$Way$NormalBehaviour at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) ~[na:0.0] at java.lang.ClassLoader.loadClass(ClassLoader.java:501) ~[na:0.0] at java.lang.ClassLoader.loadClass(ClassLoader.java:461) ~[na:0.0] at org.simpleframework.xml.strategy.Loader.load(Loader.java:50) ~[na:0.0] at org.simpleframework.xml.strategy.TreeStrategy.readValue(TreeStrategy.java:163) ~[na:0.0] at org.simpleframework.xml.strategy.TreeStrategy.read(TreeStrategy.java:102) ~[na:0.0] at org.simpleframework.xml.convert.RegistryStrategy.read(RegistryStrategy.java:103) ~[na:0.0] at org.simpleframework.xml.core.Source.getOverride(Source.java:360) ~[na:0.0] at org.simpleframework.xml.core.Factory.getConversion(Factory.java:207) ~[na:0.0] at org.simpleframework.xml.core.Factory.getOverride(Factory.java:139) ~[na:0.0] at org.simpleframework.xml.core.ObjectFactory.getInstance(ObjectFactory.java:63) ~[na:0.0] at org.simpleframework.xml.core.Composite.read(Composite.java:139) ~[na:0.0] at org.simpleframework.xml.core.Composite.readVariable(Composite.java:623) ~[na:0.0] at org.simpleframework.xml.core.Composite.readInstance(Composite.java:573) ~[na:0.0] at org.simpleframework.xml.core.Composite.readUnion(Composite.java:549) ~[na:0.0] at org.simpleframework.xml.core.Composite.readElement(Composite.java:532) ~[na:0.0] at org.simpleframework.xml.core.Composite.readElements(Composite.java:445) ~[na:0.0] at org.simpleframework.xml.core.Composite.access$400(Composite.java:59) ~[na:0.0] at org.simpleframework.xml.core.Composite$Injector.read(Composite.java:1433) ~[na:0.0] at org.simpleframework.xml.core.Composite.read(Composite.java:201) ~[na:0.0] at org.simpleframework.xml.core.Composite.read(Composite.java:148) ~[na:0.0] at org.simpleframework.xml.core.Traverser.read(Traverser.java:92) ~[na:0.0] at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:190) ~[na:0.0] at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:167) ~[na:0.0] at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:124) ~[na:0.0] at org.simpleframework.xml.core.CompositeListUnion.readElement(CompositeListUnion.java:129) ~[na:0.0] at org.simpleframework.xml.core.CompositeListUnion.read(CompositeListUnion.java:107) ~[na:0.0] at org.simpleframework.xml.core.Composite.readVariable(Composite.java:623) ~[na:0.0] at org.simpleframework.xml.core.Composite.readInstance(Composite.java:573) ~[na:0.0] at org.simpleframework.xml.core.Composite.readUnion(Composite.java:549) ~[na:0.0] at org.simpleframework.xml.core.Composite.readElement(Composite.java:532) ~[na:0.0] at org.simpleframework.xml.core.Composite.readElements(Composite.java:445) ~[na:0.0] at org.simpleframework.xml.core.Composite.access$400(Composite.java:59) ~[na:0.0] at org.simpleframework.xml.core.Composite$Injector.read(Composite.java:1433) ~[na:0.0] at org.simpleframework.xml.core.Composite.read(Composite.java:201) ~[na:0.0] at org.simpleframework.xml.core.Composite.read(Composite.java:148) ~[na:0.0] at org.simpleframework.xml.core.Traverser.read(Traverser.java:92) ~[na:0.0] at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:190) ~[na:0.0] at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:167) ~[na:0.0] at org.simpleframework.xml.core.CompositeInlineList.read(CompositeInlineList.java:144) ~[na:0.0] at org.simpleframework.xml.core.CompositeListUnion.readElement(CompositeListUnion.java:189) ~[na:0.0] at org.simpleframework.xml.core.CompositeListUnion.read(CompositeListUnion.java:162) ~[na:0.0] at org.simpleframework.xml.core.Variable$Adapter.read(Variable.java:482) ~[na:0.0] at org.simpleframework.xml.core.Composite.readVariable(Composite.java:613) ~[na:0.0] at org.simpleframework.xml.core.Composite.readInstance(Composite.java:573) ~[na:0.0] 

当SimpleXML试图反序列化Quest对象时,会发生这种情况:

  logger.debug("paragraph class: ${Paragraph::class.java}") logger.debug("NormalBehaviour class: ${Paragraph.Part.Action.Way.NormalBehaviour::class.java}") val demoObj = Paragraph.Part.Action.Way.NormalBehaviour() logger.debug("demoObj: $demoObj") xmlSerializer.read(Quest::class.java, questFile.reader()) 

我可以在代码中使用这个类(打印它,创建它的一个实例),但是SimpleXML找不到它。

这是一种错误吗?