2015-06-10 4 views
0

Я ищу пример серийной сериализации и сериализации Kryo. Как проверить правильность функции чтения и записи Kryo.NoClassDefFoundError with Kryo

Я написал код для проверки, но он возвращает исключение. Любая помощь будет заметна. Спасибо заранее.

import com.esotericsoftware.kryo.Kryo; 
import com.esotericsoftware.kryo.KryoSerializable; 
import com.esotericsoftware.kryo.Serializer; 
import com.esotericsoftware.kryo.io.Input; 
import com.esotericsoftware.kryo.io.Output; 
import com.esotericsoftware.kryo.serializers.MapSerializer; 

public class KryoSample implements KryoSerializable{ 


int number = 12345; 
String name = "Siemens"; 
boolean good = false; 

String type = "Serializer "; 
public void someValues(){  
    String name = " Kryo "; 
    String type = "Serializer "; 
} 

public KryoSample(){} 

public KryoSample(String name, String type){ 

    name = " Kryo "; 
    type = "Serializer "; 

} 


@Override 
public void read(Kryo kryo, Input input) { 
    // TODO Auto-generated method stub  
    try{ 

    String name = input.readString(); 
    int number = input.readInt(); 
    boolean good = input.readBoolean(); 

    System.out.println(name+": "+number+" : "+good); 

    }catch(Exception e){ 
     System.out.println(" Read Exception "+e.getMessage()); 
    }  
} 


@Override 
public void write(Kryo kryo, Output output) { 
    // TODO Auto-generated method stub  
    try{ 
    output.writeString(name); 
    output.writeBoolean(good); 
    output.write(number); 
    }catch(Exception e){ 
     System.out.println(" Write Exception "+e.getMessage()); 
    } 

} 
public static void main(String args[]){ 
    try{ 
    Kryo kryoObj = null; 
    //kryoObj = new Kryo(); 
    kryoObj.setReferences(false); 
    kryoObj.register(KryoSample.class, new MapSerializer()); 

    System.out.println(" TRY: "); 

    //Kryo kryoObj = new Kryo(); 
    Output outputObj = new Output();   
    Input inputObj = new Input();  
    KryoSample kryoSample = new KryoSample(); 

    kryoSample.write(kryoObj, outputObj); 
    kryoSample.read(kryoObj, inputObj); 
    }catch(Exception e){ 
     System.out.println("Kryo Exeption "+e.getMessage()); 
     } 
} 

} 
+0

Что происходит, когда вы запускаете код? Что говорит stacktrace? Вместо того, чтобы ловить исключение в 'main', вы можете просто объявить его как' throws Exception'. – gustafc

+0

Спасибо за ответ, он выдает следующее исключение Exception в потоке "основного" java.lang.NoClassDefFoundError: орг/objenesis/стратегия/InstantiatorStrategy \t на KryoSample.main (KryoSample.java:63) Вызванный: java.lang. ClassNotFoundException: – BusyBee

+0

Редактировать: теперь тема говорит, что проблема –

ответ

1

Спасибо за ответы. Мне как-то удалось исправить исключение. После включения «objenesis-1.2.jar» в путь сборки код работает нормально.