Java LibGDX FreeTypeFontGenerator NoSuchField异常
现在,我正在用Java中的LibGDX构建一个小游戏,我想使用TTF字体。我已经在构建路径中添加了gdx-freetype.jar和gdx-freetype-natives.jar,但是当我开始运行我的应用程序时,我得到了一个“java.lang.NoSuchFieldError:id”错误。责任守则:Java LibGDX FreeTypeFontGenerator NoSuchField异常,java,libgdx,Java,Libgdx,现在,我正在用Java中的LibGDX构建一个小游戏,我想使用TTF字体。我已经在构建路径中添加了gdx-freetype.jar和gdx-freetype-natives.jar,但是当我开始运行我的应用程序时,我得到了一个“java.lang.NoSuchFieldError:id”错误。责任守则: FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("data/Prosto.ttf"
FreeTypeFontGenerator generator = new
FreeTypeFontGenerator(Gdx.files.internal("data/Prosto.ttf"));
BitmapFont font = generator.generateFont(12);
generator.dispose();
我在某个地方读到它可能与罐子的版本有关。我尝试再次运行安装UI,尝试了另一个版本的JAR,但没有效果
编辑:以下是完整的堆栈跟踪:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.NoSuchFieldError: id
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:116)
Caused by: java.lang.NoSuchFieldError: id
at com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.generateData(FreeTypeFontGenerator.java:288)
at com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.generateFont(FreeTypeFontGenerator.java:137)
at com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.generateFont(FreeTypeFontGenerator.java:148)
at com.serialbit.personal.MainMenu.create(MainMenu.java:44)
at com.serialbit.personal.MainMenu.<init>(MainMenu.java:32)
at com.serialbit.personal.Tyredus.create(TyredusGame.java:8)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:130)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:110)
线程“LWJGL应用程序”com.badlogic.gdx.utils.GdxRuntimeException:java.lang.NoSuchFieldError:id中的异常
位于com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:116)
原因:java.lang.NoSuchFieldError:id
位于com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.generateData(FreeTypeFontGenerator.java:288)
位于com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.generateFont(FreeTypeFontGenerator.java:137)
位于com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.generateFont(FreeTypeFontGenerator.java:148)
在com.serialbit.personal.MainMenu.create上(MainMenu.java:44)
位于com.serialbit.personal.MainMenu(MainMenu.java:32)
在com.serialbit.personal.Tyredus.create(TyredusGame.java:8)上
位于com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:130)
位于com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:110)
使用这个,为我工作
FreeTypeFontGenerator gen = new FreeTypeFontGenerator(Gdx.files.internal("data/Prosto.tff"));
font=gen.generateFont(12);
font.getRegion().getTexture().setFilter(TextureFilter.Linear,TextureFilter.Linear);
这是一个关于LIBGDX字体的非常好的教程。我自己遵循它,没有错误
它涵盖了如何添加JAR以及今天面临的类似问题-您正在使用新版本的freetype extension,而没有更新libgdx 名为“向BitmapFont添加多页字体;更新FreeTypeFontGenerator…”的提交libgdx添加了FreeTypeFontGenerator中Glyph.id字段的用法 Glyph类位于libgdx的BitmapFont中。因此,在不更新libgdx的情况下,它会产生这个异常
您还应该更新libgdx-这将解决此问题。或者使用旧版本的freetype扩展 问题是由于未使用FreeTypeFontParameter的实例造成的。因此,当它生成字体时,它没有一组属性可分配给它。好了,这是遵循惰性初始化的原则:
您能显示错误的完整堆栈跟踪吗?您是否已将gdx freetype字体本机jar添加到构建路径中,以便在桌面上运行它…是的,我已将其添加到桌面构建路径中。它不起作用。我想,这个问题可能与Glyph类有关。也许这个库是一个旧版本…?@Xsander你看过教程了吗?