gpt4 book ai didi

java - Lib Gdx json 序列化异常和缺少无参数构造函数

转载 作者:行者123 更新时间:2023-12-02 00:41:32 32 4
gpt4 key购买 nike

当尝试执行这段代码时:

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);

我收到错误:

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 文件正确保存在另一段代码中后将其转换回数据映射。 ( HashMap )但这似乎不起作用。

我猜测他无法读取文本字符串,但我实际上不知道问题是什么。

最佳答案

异常消息“无法创建类(缺少无参数构造函数):com.bvo.easyBim.Model.Cursor”准确描述了问题所在。

Libgdx JSON 代码使用反射来创建对象实例并初始化它们。在您的示例中,必须有 com.bvo.easyBim.Model.Cursor在保存的 JSON 文件中。因此,在读取该文件时,JSON 代码需要创建 Cursor 的实例。将数据放入。它假设有一个无参数构造函数,可用于创建空 Cursor (否则它无法弄清楚哪个构造函数是合适的)。不过好像没有这个方法。

您必须将无参构造函数添加到 Cursor ,或者您必须添加一个自定义序列化程序(请参阅 https://code.google.com/p/libgdx/wiki/JsonParsing#Customizing_serialization ),它知道如何保存 Cursor实例并知道在读取 Cursor 时要调用的适当构造函数回来了。

关于java - Lib Gdx json 序列化异常和缺少无参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15278619/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com