2013-03-07 4 views
2

누락되지는 :해방 GDX의 json으로 serializationexception 코드의 조각을 실행하려고 할 때 인수 없음을 생성자

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.SerializationException: Class cannot be created (missing no-arg constructor): com.bvo.easyBim.Model.Cursor at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:113) Caused by: com.badlogic.gdx.utils.SerializationException: Class cannot be created (missing no-arg constructor): com.bvo.easyBim.Model.Cursor at com.badlogic.gdx.utils.Json.newInstance(Json.java:915) at com.badlogic.gdx.utils.Json.readValue(Json.java:793) at com.badlogic.gdx.utils.Json.readValue(Json.java:803) at com.badlogic.gdx.utils.Json.fromJson(Json.java:644) at com.bvo.easyBim.View.DataProcessor.load(DataProcessor.java:85) at com.bvo.easyBim.View.World.init(World.java:115) at com.bvo.easyBim.View.WorldRenderer.buttons(WorldRenderer.java:173) at com.bvo.easyBim.View.WorldRenderer.render(WorldRenderer.java:106) at com.bvo.easyBim.Screens.AppScreen.render(AppScreen.java:22) at com.badlogic.gdx.Game.render(Game.java:46) at com.bvo.easyBim.EasyBim.render(EasyBim.java:39) at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:187) at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:110) Caused by: java.lang.InstantiationException: com.bvo.easyBim.Model.Cursor at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at com.badlogic.gdx.utils.Json.newInstance(Json.java:901) ... 12 more

내가 다시 JSON 파일을 변환하는 것을 시도하고있다 :

public void load(String filename) { 
    FileHandle file = Gdx.files.external(filename + ".bim"); 
    Json json = new Json();  
    String text = file.readString(); 
    datamap.clear(); 
    datamap = json.fromJson(HashMap.class, text); 

오류가 발생합니다 이 코드가 다른 코드에 올바르게 저장되면 데이터 맵에 추가됩니다. (해시 맵) 그러나 이것은 작동하지 않는 것 같습니다.

나는 그가 텍스트 문자열을 읽을 수 없다고 생각하지만, 실제로 문제가 무엇인지 알지 못합니다.

답변

6

"클래스를 만들 수 없습니다 (인수가없는 생성자가 누락되었습니다) : com.bvo.easyBim.Model.Cursor"는 정확히 무엇이 잘못되는지 설명합니다.

Libgdx JSON 코드는 리플렉션을 사용하여 객체의 인스턴스를 만들고 초기화합니다. 귀하의 예에서는 저장된 JSON 파일에 com.bvo.easyBim.Model.Cursor이 있어야합니다. 그래서 파일을 읽을 때 JSON 코드는 데이터를 넣기 위해 Cursor의 인스턴스를 생성해야합니다. 빈 생성을 위해 사용할 수있는 인수가없는 생성자가 있다고 가정합니다 (어떤 생성자가 될지 알 수 없습니다). 그렇지 않으면 적절하다). 그러나 그러한 방법이없는 것 같습니다.

당신은 Cursor에 인수가없는 생성자를 추가해야합니다 중 하나, 또는 당신이 Cursor 인스턴스를 저장하는 방법을 알고하고 Cursor을 읽을 때 호출 할 적절한 생성자를 알고있는 사용자 정의 직렬 (https://code.google.com/p/libgdx/wiki/JsonParsing#Customizing_serialization 참조)를 추가해야합니다 다시 입력하십시오.