Search code examples
javaandroidstaticlibgdx

Android Studio java.lang.ExceptionInInitializerError when static game assets are called to be drawn


I've been working on a LIBGDX game for a while and last week I updated my Android Studio to Version 2.1.2. After the update I started getting the java.lang.ExceptionInInitializerError when the render method in the screen class tries to draw a static image which was called from a different class. " batcher.begin(); batcher.draw(Assets.rockWall, 0, 0, 160, 90); "

Here is my error log:

07-24 12:12:10.702 9442-9489/? E/AndroidRuntime: FATAL EXCEPTION: GLThread 32587 Process: com.dotabmot.game, PID: 9442 java.lang.ExceptionInInitializerError at com.dotabmot.game.StartMenuScreen.render(StartMenuScreen.java:108) at com.badlogic.gdx.Game.render(Game.java:46) at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:474) at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1531) at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248) Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: trollWalk1.png at com.badlogic.gdx.graphics.Pixmap.(Pixmap.java:148) at com.badlogic.gdx.graphics.TextureData$Factory.loadFromFile(TextureData.java:98) at com.badlogic.gdx.graphics.Texture.(Texture.java:100) at com.badlogic.gdx.graphics.Texture.(Texture.java:92) at com.dotabmot.game.Assets.(Assets.java:112) at com.dotabmot.game.StartMenuScreen.render(StartMenuScreen.java:108)  at com.badlogic.gdx.Game.render(Game.java:46)  at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:474)  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1531)  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)  Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Error reading file: trollWalk1.png (Internal) at com.badlogic.gdx.backends.android.AndroidFileHandle.read(AndroidFileHandle.java:77) at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:222) at com.badlogic.gdx.graphics.Pixmap.(Pixmap.java:145) at com.badlogic.gdx.graphics.TextureData$Factory.loadFromFile(TextureData.java:98)  at com.badlogic.gdx.graphics.Texture.(Texture.java:100)  at com.badlogic.gdx.graphics.Texture.(Texture.java:92)  at com.dotabmot.game.Assets.(Assets.java:112)  at com.dotabmot.game.StartMenuScreen.render(StartMenuScreen.java:108)  at com.badlogic.gdx.Game.render(Game.java:46)  at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:474)  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1531)  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)  Caused by: java.io.FileNotFoundException: trollWalk1.png at android.content.res.AssetManager.openAsset(Native Method) at android.content.res.AssetManager.open(AssetManager.java:324) at android.content.res.AssetManager.open(AssetManager.java:298) at com.badlogic.gdx.backends.android.AndroidFileHandle.read(AndroidFileHandle.java:75) at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:222)  at com.badlogic.gdx.graphics.Pixmap.(Pixmap.java:145)  at com.badlogic.gdx.graphics.TextureData$Factory.loadFromFile(TextureData.java:98)  at com.badlogic.gdx.graphics.Texture.(Texture.java:100)  at com.badlogic.gdx.graphics.Texture.(Texture.java:92)  at com.dotabmot.game.Assets.(Assets.java:112)  at com.dotabmot.game.StartMenuScreen.render(StartMenuScreen.java:108)  at com.badlogic.gdx.Game.render(Game.java:46)  at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:474)  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1531)  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)  07-24 12:12:14.782 9442-9442/? E/AndroidGraphics: waiting for pause synchronization took too long; assuming deadlock and killing

Android Studio shows no errors while compiling, how to solve this error?

Here is some code which is related to the error: Inside Assets Class:

public class Assets {

// The Rock Wall Background
public static Texture textureRockWall = new Texture(Gdx.files.internal("rockWall.jpg"));
public static TextureRegion rockWall = new TextureRegion(textureRockWall, 0, 0, 600, 450);
// The New Game Button
public static Texture textureNewGameButton = new Texture(Gdx.files.internal("newGameButton.png"));
public static TextureRegion newGameButton = new TextureRegion(textureNewGameButton, 0, 0, 139, 351);

Inside the StartMenuScreen Class:

public class StartMenuScreen implements Screen {

public void render(float delta) {

    // Draw Background Rock Wall
    batcher.begin();
    batcher.draw(Assets.rockWall, 0, 0, 160, 90); **// THIS LINE IS WHERE I GET THE ERROR. IF I REMOVE THIS LINE I GET THE SAME ERROR FOR THE NEXT STATIC OBJECT WHICH IS Assets.newGameButtonClicked...**
    //Screen1
    if(screen1) {
        if(!StartMenuScreenInputHandler.newGameButtonClicked) {
            batcher.draw(Assets.newGameButton, 50, 15, 15, 60);
        } else if(StartMenuScreenInputHandler.newGameButtonClicked){
            batcher.draw(Assets.newGameButtonP, 50, 15, 15, 60);
            if(goAhead){
                goAhead = false;
                StartMenuScreenInputHandler.newGameButtonClicked = false;
                buttonCounter = 0;
                screen1 = false;
                screen2 = true;
            }
        }    

}


Solution

  • OK here's the problem, from your stack trace:

    Caused by: java.io.FileNotFoundException: trollWalk1.png