NoValueFactoryException при использовании Zero c Ice с java - PullRequest
1 голос
/ 25 апреля 2020

Я использую ноль C Ice в моем проекте. У меня проблема со следующим исключением:

com.zeroc.Ice.NoValueFactoryException
   reason = "no value factory found and compact format prevents slicing (the sender should use the sliced format instead)"
   type = "::test::DataExt"
at com.zeroc.Ice.InputStream$EncapsDecoder11.skipSlice(InputStream.java:3120)
at com.zeroc.Ice.InputStream$EncapsDecoder11.readInstance(InputStream.java:3333)
at com.zeroc.Ice.InputStream$EncapsDecoder11.readValue(InputStream.java:2881)
at com.zeroc.Ice.InputStream.readValue(InputStream.java:1933)
at org.megacinol.test.DataListHelper.read(DataListHelper.java:48)
at org.megacinol.test.TestClass._iceD_testSth(TestClass.java:58)
at org.megacinol.test.TestClass._iceDispatch(TestClass.java:106)
at com.zeroc.IceInternal.Incoming.invoke(Incoming.java:221)
at com.zeroc.Ice.ConnectionI.invokeAll(ConnectionI.java:2706)
at com.zeroc.Ice.ConnectionI.dispatch(ConnectionI.java:1292)
at com.zeroc.Ice.ConnectionI.message(ConnectionI.java:1203)
at com.zeroc.IceInternal.ThreadPool.run(ThreadPool.java:412)
at com.zeroc.IceInternal.ThreadPool.access$500(ThreadPool.java:7)
at com.zeroc.IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:781)
at java.base/java.lang.Thread.run(Thread.java:830)

Мой файл слайса выглядит следующим образом:

[["underscore"]]
[["java:package:org.megacinol"]]

module test
{
    class Data
    {
        string name;
        string profession;
    }

    ["java:serializable:temp.Player"]
    sequence<byte> Player;

    class DataExt extends Data
    {
        Player player;
    }

    ["java:type:java.util.ArrayList<Data>"] sequence<Data> DataList;

    interface TestClass
    {
        void testSth(DataList data);
    }
}

После некоторых экспериментов и отладки я выяснил, что удаление

[["java:package:org.megacinol"]]

решает проблему.

Я могу заменить эти метаданные объявлениями вложенных модулей, но я бы предпочел придерживаться подхода метаданных.

Есть ли другой способ решения эта проблема?

1 Ответ

2 голосов
/ 25 апреля 2020

Вам необходимо настроить это свойство конфигурации Ice.Package., как описано в документации

Так что для вашего примера вам нужно установить свойство конфигурации

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