2013-11-09 18 views
2

現在,我正在用Java中的LibGDX構建一個小遊戲,並且我想使用TTF字體。我已經將gdx-freetype.jar和gdx-freetype-natives.jar添加到我的構建路徑中,但是當我開始運行我的應用程序時,出現「java.lang.NoSuchFieldError:id」錯誤。該代碼負責:LibGDX FreeTypeFontGenerator NoSuchField異常

FreeTypeFontGenerator generator = new 
FreeTypeFontGenerator(Gdx.files.internal("data/Prosto.ttf")); 
BitmapFont font = generator.generateFont(12); 
generator.dispose(); 

我在某處讀到它可能與JAR版本有關。我試過再次運行安裝界面,我嘗試過使用另一個版本的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) 
+0

您可以顯示錯誤的完整堆棧跟蹤? –

+0

您是否已將gdx-freetype-font本機jar添加到您的構建路徑中,並在桌面上運行它... –

+0

是的,我已將它添加到桌面構建路徑。 – Alex

回答

1

類似今天面臨的問題 - 你正在使用的FreeType延伸的新版本沒有更新libgdx!

對名稱爲「將多頁字體添加到BitmapFont;更新FreeTypeFontGenerator ...」的libgdx的提交在FreeTypeFontGenerator中添加了Glyph.id字段的用法。

字形類位於libgdx的BitmapFont中。所以不更新libgdx - 它會產生這個異常。

你也應該更新libgdx - 這將解決這個問題。或者使用舊版本的freetype擴展!

0

使用此,工作對我來說

FreeTypeFontGenerator gen = new FreeTypeFontGenerator(Gdx.files.internal("data/Prosto.tff")); 
     font=gen.generateFont(12); 
     font.getRegion().getTexture().setFilter(TextureFilter.Linear,TextureFilter.Linear); 

這裏是爲LIBGDX字體一個很好的教程。我跟着它自己,有沒有錯誤

https://www.google.co.uk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CDcQtwIwAA&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D3JgjFZFQu74&ei=E-R_UrrKGcmrhQf1l4GYBQ&usg=AFQjCNFDDpCbZRhftx7aXKmdcturr9qpDw&sig2=bY_ZJZw-DIgdNObDaXg3EA&bvm=bv.56146854,d.ZG4

它涵蓋了如何添加的罐子,一切

+0

它不起作用。我想這個問題可能需要對Glyph類做些什麼。也許這個圖書館是舊版本...? – Alex

+0

@Xsander你看過教程嗎? –

+0

是的..它沒有解決我的問題。 – Alex

0

該問題是由於您未使用FreeTypeFontParameter的實例造成的。所以當它生成字體時,它沒有一組屬性要分配給它。據我所知,這是繼延遲初始化的原則:

http://en.wikipedia.org/wiki/Lazy_initialization

相關問題