NoValueFactoryException при использовании Zeroc Ice - нарезанный или компактный формат? - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь использовать Ice-клиент в контексте OSGi.Работа сервера и минимального примера клиента в среде, отличной от 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 имеет значение здесь.Файл Slice выглядит следующим образом:

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"] вместо неявно используемого компактного формата.

1 Ответ

0 голосов
/ 04 февраля 2019

Ошибка означает, что во время выполнения Ice попытается загрузить класс MyModule.Knowledge.CMKnowledge, но это не удалось.Вы должны убедиться, что загрузчик классов, используемый приложением, может загрузить MyModule.Knowledge.CMKnowledge class.

См. Также https://doc.zeroc.com/ice/3.7/language-mappings/java-mapping/custom-class-loaders

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...