导出的 Slick2D 项目出现 NullPointerException

NullPointerException on exported Slick2D project

我的 Slick2D 项目在 Eclipse IDE 中执行时似乎 运行 没问题,但是当我通过 JarSplice 导出它时,它会在 class 'Menu'.

下面是引发错误的代码片段:

@Override
public void render( GameContainer gc, StateBasedGame sbg, Graphics g ) throws SlickException {

    g.setColor( Color.black );
    g.setFont( Options.getGameFont() );

    //  Draw foreground objects.
    {
        g.drawString( "Start", 10,  gc.getHeight()-50 );   // This line here
    }
}

连同堆栈跟踪:

Sat Apr 18 17:20:59 BST 2015 ERROR:null
java.lang.NullPointerException
    at org.newdawn.slick.Graphics.drawString(Graphics.java:1366)
    at com.mgthomas.states.Menu.render(Menu.java:48)
    at org.newdawn.slick.state.StateBasedGame.render(StateBasedGame.java:199)
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:688)
    at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:411)
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:321)
    at com.mgthomas.Launch.main(Launch.java:48)
Sat Apr 18 17:20:59 BST 2015 ERROR:Game.render() failure - check the game code.
org.newdawn.slick.SlickException: Game.render() failure - check the game code.
    at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:691)
    at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:411)
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:321)
    at com.mgthomas.Launch.main(Launch.java:48)

我已经将 'slick.jar' 和 'lwjgl.jar' 以及所有 windows 本机添加到 JarSplice,并且它可以毫无问题地导出。但是通过命令提示符导出的.jar文件为运行时,出现如上错误

(抱歉 - 我没有足够的声誉点数来 post 发表评论,所以我 post 将此作为答案。)

如果您按照下面的指南添加了库 jar 和 natives,那么它应该可以工作。

Simple guide to creating a .jar, .exe or .jnlp?

您使用的是哪个版本的 Slick2D?我之所以问,是因为我最近将我的库更新为带有 LWJGL 2.9.2 版本(2015 年 1 月 10 日)的 Slick build 237,并且遇到了一些问题。最后,我使用 LWJGL 2.9.0(2013 年 6 月 3 日)恢复到 Slick build 237。尽管内部版本号相同,但我提出的问题表明 Slick2D 中的某些内容发生了变化并使其不稳定。我在网上注意到其他人也遇到过该构建的问题。