Java 无法反序列化bndtools osgi项目中的xml

Java 无法反序列化bndtools osgi项目中的xml,java,xml-serialization,osgi,bndtools,Java,Xml Serialization,Osgi,Bndtools,我是osgi和bndtools的新手,从bndtools开始 教程运行得很好,然后我尝试使用我自己的测试项目实现一个接口,在实现中,我尝试使用 我得到以下ClassNotFoundException。此外,我还将所讨论的类所属的包作为私有包的一部分包含在我正在运行的包中 java.lang.ClassNotFoundException:packagename.classname位于 java.net.URLClassLoader$1.run未知源代码位于 java.net.URLClassLoa

我是osgi和bndtools的新手,从bndtools开始

教程运行得很好,然后我尝试使用我自己的测试项目实现一个接口,在实现中,我尝试使用

我得到以下ClassNotFoundException。此外,我还将所讨论的类所属的包作为私有包的一部分包含在我正在运行的包中

java.lang.ClassNotFoundException:packagename.classname位于 java.net.URLClassLoader$1.run未知源代码位于 java.net.URLClassLoader$1.run未知源代码位于 位于的java.security.AccessController.doPrivilegeEdNative方法 java.net.URLClassLoader.findClassUnknown源位于 位于的java.lang.ClassLoader.loadClassUnknown源 sun.misc.Launcher$AppClassLoader.loadClassUnknown源位于 位于的java.lang.ClassLoader.loadClassUnknown源 org.simpleframework.xml.strategy.Loader.loadLoader.java:50 at org.simpleframework.xml.strategy.treestategy.readvaluetreestategy.java:163 在 org.simpleframework.xml.strategy.treestategy.readTreestategy.java:102 位于org.simpleframework.xml.core.Source.getOverrideSource.java:370 在 org.simpleframework.xml.core.Factory.getConversionFactory.java:207 位于org.simpleframework.xml.core.Factory.getOverrideFactory.java:139 在 org.simpleframework.xml.core.ObjectFactory.getInstanceObjectFactory.java:63 位于org.simpleframework.xml.core.Composite.readComposite.java:141 在 org.simpleframework.xml.core.Composite.readVariableComposite.java:687 在 org.simpleframework.xml.core.Composite.readInstanceComposite.java:635 在 org.simpleframework.xml.core.Composite.readUnionComposite.java:610 在 org.simpleframework.xml.core.Composite.readElementComposite.java:593 在 org.simpleframework.xml.core.Composite.readElementsComposite.java:506 在 org.simpleframework.xml.core.Composite.readSectionComposite.java:388 位于org.simpleframework.xml.core.Composite.readComposite.java:367 位于org.simpleframework.xml.core.Composite.readComposite.java:234 位于org.simpleframework.xml.core.Composite.readComposite.java:202 位于org.simpleframework.xml.core.Composite.readComposite.java:150 位于org.simpleframework.xml.core.Traverser.readTraverser.java:92 at org.simpleframework.xml.core.CompositeList.populateCompositeList.java:175 在 org.simpleframework.xml.core.CompositeList.readCompositeList.java:148 在 org.simpleframework.xml.core.Composite.readVariableComposite.java:682 在 org.simpleframework.xml.core.Composite.readInstanceComposite.java:635 在 org.simpleframework.xml.core.Composite.readUnionComposite.java:610 在 org.simpleframework.xml.core.Composite.readElementComposite.java:593 在 org.simpleframework.xml.core.Composite.readElementsComposite.java:506 在 org.simpleframework.xml.core.Composite.readSectionComposite.java:388 位于org.simpleframework.xml.core.Composite.readComposite.java:367 在 org.simpleframework.xml.core.Composite.readDefaultComposite.java:262 位于org.simpleframework.xml.core.Composite.readComposite.java:232 位于org.simpleframework.xml.core.Composite.readComposite.java:202 位于org.simpleframework.xml.core.Composite.readComposite.java:150 在 org.simpleframework.xml.core.Composite.readVariableComposite.java:687 在 org.simpleframework.xml.core.Composite.readInstanceComposite.java:635 在 org.simpleframework.xml.core.Composite.readUnionComposite.java:610 在 org.simpleframework.xml.core.Composite.readElementComposite.java:593 在 org.simpleframework.xml.core.Composite.readElementsComposite.java:506 在 org.simpleframework.xml.core.Composite.readSectionComposite.java:388 位于org.simpleframework.xml.core.Composite.readComposite.java:367 在 org.simpleframework.xml.core.Composite.readDefaultComposite.java:262 位于org.simpleframework.xml.core.Composite.readComposite.java:232 位于org.simpleframework.xml.core.Composite.readComposite.java:202 位于org.simpleframework.xml.core.Composite.readComposite.java:150 位于org.simpleframework.xml.core.Traverser.readTraverser.java:92 at org.simpleframework.xml.core.CompositeList.populateCompositeList.java:175 在 org.simpleframework.xml.core.CompositeList.readCompositeList.java:148 在 org.simpleframework.xml.core.Composite.readVariableComposite.java:682 在 org.simpleframework.xml.core.Composite.readInstanceComposite.java:635 在 org.simpleframework.xml.core.Composite.readUnionComposite.java:610 在 org.simpleframework.xml.core.Composite.readElementComposite.java:593 在 org.simpleframework.xml.core.Composite.readElementsComposite.java:506 在 org.simpleframework.xml.core.Composite.readSectionComposite.java:388 位于org.simpleframework.xml.core.Composite.readComposite.java:367 在 org.simplefr amework.xml.core.Composite.readDefaultComposite.java:262 位于org.simpleframework.xml.core.Composite.readComposite.java:232 位于org.simpleframework.xml.core.Composite.readComposite.java:202 位于org.simpleframework.xml.core.Composite.readComposite.java:150 位于org.simpleframework.xml.core.Traverser.readTraverser.java:92 at org.simpleframework.xml.core.Persister.readPersister.java:632 at org.simpleframework.xml.core.Persister.readPersister.java:613 at org.simpleframework.xml.core.Persister.readPersister.java:591 at org.simpleframework.xml.core.Persister.readPersister.java:550 at org.simpleframework.xml.core.Persister.readPersister.java:528 at org.simpleframework.xml.core.Persister.readPersister.java:433 at com.mlsm.implementation.MLSMImpl.parsemlsmmpl.java:150 at com.mlsm.implementation.MLSMImpl.executeInternalMLSMImpl.java:84 at com.mlsm.implementation.MLSMImpl.parseAndExecuteMLSMImpl.java:182 在com.mlsm.implementation.MLSMImpl.startMLSMImpl.java:65 at sun.reflect.NativeMethodAccessorImpl.invoke0Native方法位于 sun.reflect.NativeMethodAccessorImpl.invokeUnknown源位于 sun.reflect.DelegatingMethodAccessorImpl.invokeUnknown源位于 java.lang.reflect.Method.invokeUnknown源代码位于 org.apache.felix.dependencymanager.ServiceImpl.invokeServiceImpl.java:484 在 org.apache.felix.dependencymanager.ServiceImpl.ActivateServiceImpl.java:441 在 org.apache.felix.dependencymanager.ServiceImpl.access$000ServiceImpl.java:44 在 org.apache.felix.dependencymanager.ServiceImpl$3.runServiceImpl.java:125 在 org.apache.felix.dependencymanager.SerialExecutor$1.runSerialExecutor.java:47 在 org.apache.felix.dependencymanager.SerialExecutor.scheduleNextSerialExecutor.java:84 在 org.apache.felix.dependencymanager.SerialExecutor.executeSerialExecutor.java:68 在 org.apache.felix.dependencymanager.ServiceImpl.CalculateStatechangeServiceImpl.java:147 在 org.apache.felix.dependencymanager.ServiceImpl.startServiceImpl.java:257 在 org.apache.felix.dependencymanager.dependencymanager.addDependencyManager.java:56 com.mlsm.implementation.Activator.initActivator.java:24 at org.apache.felix.dependencymanager.DependencyActivatorBase.startDependencyActivatorBase.java:76 在 org.apache.felix.framework.util.SecureAction.startActivatorSecureAction.java:645 位于org.apache.felix.framework.felix.activateBundleFelix.java:2152 位于org.apache.felix.framework.felix.startBundleFelix.java:2070 at org.apache.felix.framework.BundleImpl.startBundleImpl.java:976 at java:422 at java:346 at java:235 at aquete.launcher.launcher.mainluncher.java:92

这就是在服务启动中所做的

public void start() {
      Serializer serializer = new Persister();
      File result = new File(filePath);
      serializer.read(<ClassToSerializeTo>.class, result);
}
还有一件事需要注意,这段代码在osgi框架之外运行良好。让我知道更多信息是否有助于调试该问题

我也读过这篇文章,但仍然对眼前的问题感到困惑

编辑: 所以我发现,只有当xml有一个如下所示的元素时,才会发生这种情况

   <TestElement class="PackageName.Classname">
有什么想法吗


谢谢

我刚刚下载了simple-xml.jar的当前版本。清单现在显示OSGi属性。所以我猜这个库并没有考虑OSGi。所以它可能有类加载问题。你应该在他们的邮件列表上询问他们是否应该使用OSGi


如果这是框架中的一个问题,那么开发人员可能会解决这个问题。也许你可以找到一个解决方法,但这可能并不容易。

我通过在反序列化代码之前添加这两行代码来修复它

ClassLoader thisClassLoader=.getClassLoader; Thread.currentThread.SetContextClassLoader ThisClassLoader