2009-01-13 69 views
0

我在Java中使用簡單的XML反序列化的數據,但我得到一個異常告訴我:未知異常反序列化利用簡單的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

+0

發佈堆棧跟蹤可能有助於 – 2009-01-14 05:19:24

+0

注意,它是在失敗沒有的init(),即問題在構造函數 – 2009-01-14 05:22:37

回答

1

的異常是指問題涉及調用終端構造。

通常,構造對象反序列化時,一個無參數的構造器必須是可用的,就像這樣:

public Terminal() { 
    ... 
}