使用 Zeroc Ice 时出现 NoValueFactoryException - 切片与紧凑格式?
NoValueFactoryException when using Zeroc Ice - Sliced vs. compact format?
我正在尝试在 OSGi 上下文中使用 Ice 客户端。 运行 服务器和非 OSGi 环境中的最小示例客户端工作正常。对于 OSGi 环境中的客户端,我得到以下异常:
com.zeroc.Ice.NoValueFactoryException
reason = "no value factory found and compact format prevents slicing (the sender should use the sliced format instead)"
type = "::MyModule::Knowledge::CMKnowledge"
但是,我不能 100% 确定 OSGi 运行时是否在这里有所作为。切片文件如下所示:
module MyModule{
module Knowledge{
class KnowledgePart{
string value;
}
class FMKnowledge extends KnowledgePart{}
class CMKnowledge extends KnowledgePart{}
interface IKnowledge{
void sendKnowledge(KnowledgePart knowledge);
FMKnowledge getFMKnowledge();
CMKnowledge getCMKnowledge();
}
}
}
在这种情况下,这个异常是什么意思,我该如何解决?我已经尝试设置 ["format:sliced"] 而不是隐式使用的紧凑格式。
错误意味着 Ice 运行 次尝试加载 MyModule.Knowledge.CMKnowledge
class 但未能成功。您必须确保应用程序使用的 class 加载程序可以加载 MyModule.Knowledge.CMKnowledge
class.
另见 https://doc.zeroc.com/ice/3.7/language-mappings/java-mapping/custom-class-loaders
我正在尝试在 OSGi 上下文中使用 Ice 客户端。 运行 服务器和非 OSGi 环境中的最小示例客户端工作正常。对于 OSGi 环境中的客户端,我得到以下异常:
com.zeroc.Ice.NoValueFactoryException
reason = "no value factory found and compact format prevents slicing (the sender should use the sliced format instead)"
type = "::MyModule::Knowledge::CMKnowledge"
但是,我不能 100% 确定 OSGi 运行时是否在这里有所作为。切片文件如下所示:
module MyModule{
module Knowledge{
class KnowledgePart{
string value;
}
class FMKnowledge extends KnowledgePart{}
class CMKnowledge extends KnowledgePart{}
interface IKnowledge{
void sendKnowledge(KnowledgePart knowledge);
FMKnowledge getFMKnowledge();
CMKnowledge getCMKnowledge();
}
}
}
在这种情况下,这个异常是什么意思,我该如何解决?我已经尝试设置 ["format:sliced"] 而不是隐式使用的紧凑格式。
错误意味着 Ice 运行 次尝试加载 MyModule.Knowledge.CMKnowledge
class 但未能成功。您必须确保应用程序使用的 class 加载程序可以加载 MyModule.Knowledge.CMKnowledge
class.
另见 https://doc.zeroc.com/ice/3.7/language-mappings/java-mapping/custom-class-loaders