GWT(2.8.0)在LibGDX 1.9.5上出现字体文件解析错误

3
我想知道是我做错了什么,还是LibGDX/GWT中出现了一个bug。我的游戏有桌面/Android/iOS/HTML后端,从一个月前的1.9.5-SNAPSHOT升级到1.9.5后,HTML版本无法正常工作。我能看到的主要变化是从2.6.0升级到了2.8.0的GWT。
当我在浏览器(Windows 10上的Chrome 56.0.2924.21 beta (64-bit))中运行应用程序时,会出现以下错误:
GwtApplication: exception: com.badlogic.gdx.utils.SerializationException: Error reading file: static/uiskin_hd.json
com.badlogic.gdx.utils.SerializationException: Error reading file: static/uiskin_hd.json
Error reading file: static/uiskin_hd.json
Error reading file: static/uiskin_hd.json
Error loading bitmap font: static/helsinki28plain_hd.fnt
Error loading font file: static/helsinki28plain_hd.fnt
Invalid page id: 
For input string: ""

这个字体之前是可以使用的,无论是哪种字体(包括LibGDX测试中的默认字体default.fnt),我都得到了相同的结果。该字体文件的顶部如下所示:

info face="Helsinki" size=56 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=2,2,8,4 spacing=0,0
common lineHeight=75 base=52 scaleW=512 scaleH=1024 pages=1 packed=0
page id=0 file="helsinki28plain_hd.png"
chars count=141
char id=32   x=0     y=0     width=0     height=0     xoffset=0     yoffset=52    xadvance=22     page=0  chnl=0 
char id=92   x=0     y=0     width=24     height=72     xoffset=-2     yoffset=0    xadvance=22     page=0  chnl=0 
char id=47   x=24     y=0     width=24     height=72     xoffset=-2     yoffset=0    xadvance=22     page=0  chnl=0 
...

为了确保问题不是由于我的设置引起的,我检查了LibGDX的最新主分支并尝试运行GWT测试:

git clone https://github.com/libgdx/libgdx.git
cd libgdx
ant -f fetch
ant
./gradlew tests:gdx-tests-gwt:draftRun

这也似乎失败了:
Compiling module com.badlogic.gdx.tests.gwt.GdxTestsGwt
   Finding entry point classes
      [ERROR] Errors in 'file:/C:/devtools/libgdx/gdx/src/com/badlogic/gdx/Net.java'
         [ERROR] Line 80: No source code is available for type java.io.InputStream; did you forget to inherit a required module?
      [ERROR] Errors in 'file:/C:/devtools/libgdx/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtNet.java'
         [ERROR] Line 70: No source code is available for type java.io.InputStream; did you forget to inherit a required module?
      [ERROR] Errors in 'file:/C:/devtools/libgdx/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/preloader/Preloader.java'
         [ERROR] Line 200: No source code is available for type java.io.InputStream; did you forget to inherit a required module?
         [ERROR] Line 203: No source code is available for type java.io.ByteArrayInputStream; did you forget to inherit a required module?
      [ERROR] Errors in 'file:/C:/devtools/libgdx/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/com/badlogic/gdx/files/FileHandle.java'
         [ERROR] Line 78: No source code is available for type java.io.InputStream; did you forget to inherit a required module?
      [ERROR] Errors in 'file:/C:/devtools/libgdx/gdx/src/com/badlogic/gdx/net/Socket.java'
         [ERROR] Line 41: No source code is available for type java.io.InputStream; did you forget to inherit a required module?
      [ERROR] Errors in 'file:/C:/devtools/libgdx/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/preloader/Blob.java'
         [ERROR] Line 38: No source code is available for type java.io.InputStream; did you forget to inherit a required module?
      [ERROR] Errors in 'file:/C:/devtools/libgdx/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/java/io/BufferedInputStream.java'
         [ERROR] Line 19: No source code is available for type java.io.FilterInputStream; did you forget to inherit a required module?
         [ERROR] Line 20: No source code is available for type java.io.InputStream; did you forget to inherit a required module?
      [ERROR] Errors in 'file:/C:/devtools/libgdx/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/java/io/Reader.java'
         [ERROR] Line 33: No source code is available for type java.io.Closeable; did you forget to inherit a required module?
      [ERROR] Errors in 'file:/C:/devtools/libgdx/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/emu/java/io/Writer.java'
         [ERROR] Line 30: No source code is available for type java.io.Closeable; did you forget to inherit a required module?
         [ERROR] Line 30: No source code is available for type java.io.Flushable; did you forget to inherit a required module?
      [ERROR] Unable to find type 'com.badlogic.gdx.tests.gwt.client.GwtTestStarter'
         [ERROR] Hint: Previous compiler errors may have made this type unavailable
         [ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly
:tests:gdx-tests-gwt:draftCompileGwt FAILED

有什么想法是怎么回事吗?(我的Java SDK是jdk1.8.0_20)


解析错误可能是因为libgdx运行时找不到文件。鉴于预加载器以同步方式使文件对JS可用,似乎找不到io类可能是问题的根本原因。当某些东西无法正常工作时,GWT人员通常建议进行某种清理构建。也许之前版本中有一些剩余的东西阻碍了进程? - Stefan Haustein
谢谢,Stefan。根据错误输出,皮肤json文件已正确加载,因为它知道尝试加载名为helsinki28plain_hd的字体。我还尝试清理了所有内容(在构建目录下 - 我假设这是gradle放置所有中间工作产品的地方),但结果仍然相同。 - slarbu
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接