使用简单 XML 反序列化时出现未知异常

发布于 2024-07-11 00:06:26 字数 2128 浏览 8 评论 0原文

我正在 Java 中使用 Simple XML 反序列化数据,但出现异常告诉我:

protokolsimulering.model.Terminal.<init>()

这是我的序列化代码:

public void saveSimulationState(String simulationFile) {
    try{
        Strategy strategy = new CycleStrategy("id", "ref");
        Serializer serializer = new Persister(strategy);
        File result = new File(simulationFile);
        serializer.write(this.sm, result);
    }
    catch(Exception ex)
    {
        System.out.println(ex.getMessage());
    }
}

public void loadSimulationState(String simulationFile) {
    try {
        Strategy strategy = new CycleStrategy("id", "ref");
        Serializer serializer = new Persister(strategy);
        File source = new File(simulationFile);
        this.sm = serializer.read(Simulation.class, source);
    } catch (Exception ex) {
        System.out.println(ex.getLocalizedMessage());
    }
}

Terminal.java 的代码是:

package protokolsimulering.model;

import java.util.ArrayList;
import protokolsimulering.model.DataPacket.*;

public class Terminal extends Sensor {

    public Terminal(int x, int y, double r) {
        super(x,y,r);
        learnPosition();
    }

    @Override
    public void init() {
        this.broadcast(PacketFactory.newRutePacket(this,0));
    }

    @Override
    public void step() {
        ArrayList<AbstractPacket> packetsThisStep = (ArrayList<AbstractPacket>) this.getPackages();

        for(AbstractPacket p : packetsThisStep) {
            if(p instanceof HalloPacket) {    
                // Rutningsprotokol
                send(p.getSender(),PacketFactory.newRutePacket(this,0));

                // Lokaliseringsprotokol
                send(p.getSender(), PacketFactory.newHerPacket(this, this.getKnownPosition()));
        }
    }
}

}

整个源代码可以在以下位置找到:

http://code.google.com/p/sensor-protocol -simulation/source/browse/#svn/trunk/src/protokolsimulering

I am deserializing data using Simple XML in Java, but i get an exception telling me:

protokolsimulering.model.Terminal.<init>()

This is my serializing code:

public void saveSimulationState(String simulationFile) {
    try{
        Strategy strategy = new CycleStrategy("id", "ref");
        Serializer serializer = new Persister(strategy);
        File result = new File(simulationFile);
        serializer.write(this.sm, result);
    }
    catch(Exception ex)
    {
        System.out.println(ex.getMessage());
    }
}

public void loadSimulationState(String simulationFile) {
    try {
        Strategy strategy = new CycleStrategy("id", "ref");
        Serializer serializer = new Persister(strategy);
        File source = new File(simulationFile);
        this.sm = serializer.read(Simulation.class, source);
    } catch (Exception ex) {
        System.out.println(ex.getLocalizedMessage());
    }
}

The code for Terminal.java is:

package protokolsimulering.model;

import java.util.ArrayList;
import protokolsimulering.model.DataPacket.*;

public class Terminal extends Sensor {

    public Terminal(int x, int y, double r) {
        super(x,y,r);
        learnPosition();
    }

    @Override
    public void init() {
        this.broadcast(PacketFactory.newRutePacket(this,0));
    }

    @Override
    public void step() {
        ArrayList<AbstractPacket> packetsThisStep = (ArrayList<AbstractPacket>) this.getPackages();

        for(AbstractPacket p : packetsThisStep) {
            if(p instanceof HalloPacket) {    
                // Rutningsprotokol
                send(p.getSender(),PacketFactory.newRutePacket(this,0));

                // Lokaliseringsprotokol
                send(p.getSender(), PacketFactory.newHerPacket(this, this.getKnownPosition()));
        }
    }
}

}

The entire source code can be found at:

http://code.google.com/p/sensor-protocol-simulation/source/browse/#svn/trunk/src/protokolsimulering

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天荒地未老 2024-07-18 00:06:26

该异常意味着问题与调用终端构造函数有关。

通常,要在反序列化时构造对象,必须提供无参数构造函数,如下所示:

public Terminal() {
    ...
}

The exception means the problem is related to invoking the Terminal constructor.

Typically, to construct objects when deserializing, a no-args contructor must be available, like this:

public Terminal() {
    ...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文