【发布时间】:2015-01-05 16:14:20
【问题描述】:
当我尝试运行我的项目时,我的游戏因以下错误而崩溃:
Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.badlogic.gdx.utils.Json.writeValue(Json.java:372)
at com.mygdx.game.GuardarMundo.write(GuardarMundo.java:12)
at com.mygdx.game.Mundo.<init>(Mundo.java:71)
at com.mygdx.game.Strategy.create(Strategy.java:9)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
代码是:
static int x,z;
static String type;
@Override
public void write(Json json) {
json.writeValue("X", x);
json.writeValue("Z", z);
json.writeValue("Type", type);
}
@Override
public void read(Json json, JsonValue jsonData) {
// TODO Auto-generated method stub
}
public static void setBlock(int x2,int z2,String type2){
x= x2;
z=z2;
type= type2;
}
有什么问题?
【问题讨论】:
-
JSON 确实有效。您的标题无效。
-
您在
setBlock()方法之前调用write()方法,因此您的type为空。 -
这里似乎
type为空。因为x和y是原始类型。分配type=""然后检查,是否会抛出同样的错误? -
不,我在 setBlock()
json = new Json(); guardar = new GuardarMundo(); for(int z = 0; z < 10; z++) { for(int x = 0; x < 10; x++) { GuardarMundo.setBlock(x,z,"dirt"); guardar.write(json); } }987654330@ 之后调用 -
您尚未指定将 json 写入何处,因此您的
json对象中的writer字段为null。尝试使用json.toJson而不是在没有上下文的情况下仅调用write(json)。