Почему при десериализации XML возникает ошибка CannotResolveClassException?

Eclipse Я получаю сообщение об ошибке консоли, и когда я нажимаю на ссылку, чтобы увидеть, где произошла ошибка, он перенаправляет меня на информационный экран, где указывает, что источник библиотеки не существует.

Если я нажимаю на кнопку «изменить подключенный источник», открывается диалоговое окно, в котором предлагается список установленных библиотек. Я нахожу тот, который мне нужен, выбираю его, но он не берет его от меня и продолжает говорить, что у меня нет библиотеки, когда я импортирую ее в проект.

Не могли бы вы рассказать мне об этой проблеме?

Добавить трассировку стека

captura_3

Добавить код функции:

public static void autoload_Config_xml() {
    String PATH;
    Config c=new Config ();



    try {
        XStream xstream = new XStream();
        Annotations.configureAliases(xstream, Registered_user.class);

        PATH = new java.io.File(".").getCanonicalPath()
                + "/src/ejer_tema_4/Utilities/Config/Config.xml";

        File path = new File(PATH);

        if (path.exists()) {
            //Singleton.registered_users = (ArrayList) xstream.fromXML(new FileReader(PATH));
            //Singleton_Config.config=(Config)xstream.fromXML(new FileReader(PATH));
            c=(Config)xstream.fromXML(new FileReader(PATH));
            Config.setInstance(c);

        }

    } catch (IOException e) {

        e.printStackTrace();

        JOptionPane.showMessageDialog(null, "Reading error reg_users.xml", "ERROR", JOptionPane.ERROR_MESSAGE);
    }

Добавить трассировку стека, которая Возникает после включения предложений Луиджи Мендосы в код:

Exception in thread "main" com.thoughtworks.xstream.io.StreamException:  : input contained no data
at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:80)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:137)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.readEvent(AbstractPullReader.java:130)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.move(AbstractPullReader.java:109)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.moveDown(AbstractPullReader.java:94)
at com.thoughtworks.xstream.io.xml.XppReader.(XppReader.java:48)
at com.thoughtworks.xstream.io.xml.XppDriver.createReader(XppDriver.java:44)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)
at ejer_tema_4.Utilities.Config.Config_func.autoload_Config_xml(Config_func.java:90)
at ejer_tema_4.Mains.Main_menu.main(Main_menu.java:24)
Caused by: java.io.EOFException: input contained no data
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3003)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1410)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1395)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:63)
... 9 more

0
задан 18.03.2016, 15:23
3 ответа

В этой lГ-nea

XStream xstream = new XStream();
    Annotations.configureAliases(xstream, Registered_user.class);

вместо Registered_user.class размещает Config.class, который является тем, что ты действительно хочешь обработать.

типов Привета,

1
ответ дан 24.11.2019, 14:55
  • 1
    Хороший это неудобное, он был бы должен проверить код, потому что в действительности, где он помещает Registered_user.class, он был бы должен помещать Config.class, но если я это не сделал, он, потому что, (вы не будете верить это), в предыдущей версии оно функционирует с Registered_user. – Sergio Bertomeu 05.02.2016, 20:18

Здесь проблема: ты не конфигурируешь класс Config чтобы быть serializada/deserializada из-за XStream:

XStream xstream = new XStream();
Annotations.configureAliases(xstream, Registered_user.class);
//...
c=(Config)xstream.fromXML(new FileReader(PATH));

Как кажется, твой xml обладает следующей формой:

<config>
    <!-- contenido del XML -->
</config>

И КССТРЕАМ не имеет картографии, как преобразовывать элемент <config> в класс в особенности. Чтобы это решать, он добавляет значимую конфигурацию для этого случая:

xstream.alias(Config.class.getSimpleName(), Config.class);

Или используя метод, который у тебя есть наверху:

Annotations.configureAliases(xstream, Config.class);
0
ответ дан 24.11.2019, 14:55
  • 1
    Я заменил Registered_user.class из-за Config.class и протестировал также менять Annotations.configureAliases (xstream, Config.class); из-за xstream.alias (Config.class.getSimpleName (), Config.class); и da другая ошибка, чем posteo далее. – Sergio Bertomeu 05.02.2016, 20:29

Продолжи эти шаги:

  1. Правая кнопка в проекте, к которому ты хочешь добавить книжный магазин. Выбор Properties...
  2. Выбери Java Build Path в боковом меню

    • Если jar находится в workspace Адд ХАРС...
    • Если jar - внешний каталог Адд Экстерналь JARs...
  3. Выбери jar в браузере, который открывается, и я заношу в список.

introducir la descripción de la imagen aquí

После уже ты сможешь использовать книжный магазин в твоих классах.

-1
ответ дан 24.11.2019, 14:55
  • 1
    Ах и # 237; cuesti и # 243; n, я открываю Java Буильд Пат и в pesta и # 241; в librer и # 237; эксперт появляется librer и # 237; которому потом он говорит, что не est и # 225;. Если пульс Адд ХАРС не предлагает меня librer и # 237; схвати, чтобы импортировать внутри моего проекта так как тех, которые у меня есть уже est и # 225; n все импортируемые. Tambi и # 233; n я попробовал импортировать их внешним способом, но ошибка - та же самая. librer и # 237; в эту импортируемую, но он не распознает ее. – Sergio Bertomeu 05.02.2016, 14:01
  • 2
    загрузи jar в руку, и экспортируй это с внешнего каталога к workspace, когда ты это увидишь в Referenced Libraries podr и # 225; s использовать это в проекте. – Jordi Castilla 05.02.2016, 14:16
  • 3
    Я продолжил твои указания, то есть, загрузил снова librer и # 237; в, я сохранял ее во внешнем файле. Я удалил librer и # 237; схвати существующие равного имени и импортируемый последняя, загруженная с внешней папки. Я выполняю и сообщение ошибки сохраняется. – Sergio Bertomeu 05.02.2016, 14:57
  • 4
    #191; Конечно, в котором он уезжает, Референсед Либрарьес находится? – Sergio Bertomeu 05.02.2016, 14:59
  • 5
    Нужно наблюдать деталь, когда librear и # 237; в es распознанная в trav и # 233; s classpath; c и # 243; я говорю, что он просто не составляет и в IDE он должен быть подчеркнутым с красным и #191; оно последует за тобой?, если оно не последует за тобой, тогда я думаю, что это не тема imports librer и # 237; схвати, если не скорее ошибки во времени ejecuci и # 243; n. Ты подтверждаешь нам? Потому что я вижу один Exception in thread main, или же что estas выполняя, или же который он составляет. – Rosendo Ropher 05.02.2016, 17:23