Java LibGDX:无法从资产文件夹加载json文件

Java LibGDX:无法从资产文件夹加载json文件,java,json,gwt,libgdx,filehandle,Java,Json,Gwt,Libgdx,Filehandle,我有一个json文件,其中包含存储在assets文件夹中的游戏中所有分片的数据。我尝试使用TileList-dataList=json.fromJson(TileList.class,Gdx.file.internal(“map-elements/tiles/tiles.json”)访问并解析它。这对于桌面版本很好,但在html版本上,使用gwt转换后,我会出现以下错误: GwtApplication: exception: Error reading file: map-elements/ti

我有一个json文件,其中包含存储在assets文件夹中的游戏中所有分片的数据。我尝试使用
TileList-dataList=json.fromJson(TileList.class,Gdx.file.internal(“map-elements/tiles/tiles.json”)
访问并解析它。这对于桌面版本很好,但在html版本上,使用gwt转换后,我会出现以下错误:

GwtApplication: exception: Error reading file: map-elements/tiles/tiles.json
Error reading file: map-elements/tiles/tiles.json
Couldn't find Type for class 'net.vediogames.archipelo.world.tiles.TileList'

TileList是一个简单的对象,它包含一个TileData数组,然后可以将该数组转换为Tile对象。我这样做是为了简化json解析。

json错误的解决方案很简单。不要将FileHandle传递到json解析器中,而是像下面这样从文件中传递字符串:

TileList dataList = json.fromJson(TileList.class, Gdx.file.internal("map-elements/tiles/tiles.json").readString());
最后,我需要做的就是添加
.readString()
。至于
找不到类“net.vediogames.archipelo.world.tiles.TileList”的类型的错误,我也找到了一个解决方案,但它更复杂

JavaScript处理类引用的方式与Java不同。因此,我无法在没有注册的情况下使用
TileList.class
,这样LibGDX就可以生成反射。我需要做的是将这一行添加到我的*.gwt.xml文件中:


如果您想要一个关于反射如何工作以及如何包含包或排除包的完整教程,请查看官方LibGDX教程。

您的解决方案对我不起作用,我仍然收到相同的错误。经过几个小时的测试,我使用您的建议,通过使用
ClassReflection
而不是引用类本身,使它开始工作。 你的例子是:

TileList dataList = json.fromJson(TileList.class, Gdx.file.internal("map-elements/tiles/tiles.json").readString());
在我的工作代码中看起来像:

TileList dataList = (TileList) json.fromJson(ClassReflection.forName(TileList.class.getName()), Gdx.file.internal("map-elements/tiles/tiles.json").readString());

这在a.中是相当痛苦的。。但我很高兴它现在终于可以工作了。

我找到了这个线程,它可能有解决方案。我一到家就试试。我修好了。我改为:
TileList dataList=json.fromJson(TileList.class,Gdx.file.internal(“map elements/tiles/tiles.json”).readString())
。我仍然得到
找不到类“net.vediogames.archipelo.world.tiles.TileList”的类型的错误。但我认为这完全是出于另一个原因。你好,如果你解决了这个问题,你应该把它作为答案加入,然后接受它。我最后也这么做了。我忘了寄了。谢谢分享:)