java.lang.ClassNotFoundException:资源?

java.lang.ClassNotFoundException:资源?,java,libgdx,Java,Libgdx,我正在尝试创建一个带有json文件中定义的皮肤的Textbutton。 我是libgdx的初学者,所以可能是显示器和键盘之间的问题;) 我希望你能帮助我 LibGDX版本:全新Git Pull(2012年11月20日) 我的json(位于“data/button.json”): { resources: { com.badlogic.gdx.graphics.Color: { white: { r:

我正在尝试创建一个带有json文件中定义的皮肤的Textbutton。 我是libgdx的初学者,所以可能是显示器和键盘之间的问题;) 我希望你能帮助我

LibGDX版本:全新Git Pull(2012年11月20日)

我的json(位于“data/button.json”):

{
        resources: {
                com.badlogic.gdx.graphics.Color: {
                        white: { r: 1, g: 1, b: 1, a: 1 },
                        downFontColor: { r: 1, g: 0.1, b: 0.2, a: 1 }
                },
                com.badlogic.gdx.graphics.g2d.BitmapFont: {
                        default-font: { file: default.fnt }
                }
        },
        styles: {
                com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
                        default: {
                                font: default-font, 
                                downFontColor: downFontColor,
                                fontColor: white
                        }
                }
        }
 }  
    Skin skin = new Skin(Gdx.files.internal("data/button.json"));
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:72)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.createButton(MenuScreen.java:105)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.create(MenuScreen.java:47)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.show(MenuScreen.java:131)
    at com.badlogic.gdx.Game.setScreen(Game.java:62)
    at eu.loecken.tools.virtuallampsi.MainGame.create(MainGame.java:48)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:125)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:596)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:93)
    ... 8 more
Caused by: com.badlogic.gdx.utils.SerializationException: 
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:424)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:1)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:762)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:409)
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:594)
    ... 9 more
Caused by: java.lang.ClassNotFoundException: resources
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:422)
    ... 13 more
private final BitmapFont defaultFont = new BitmapFont(
        Gdx.files.internal("data/default.fnt"), false);
private final Texture btnTexture = new Texture(
        Gdx.files.internal("buttons/lvl.png"));

private Button createButton(String text) {
    // Initialize skin
    // Skin skin = new Skin(Gdx.files.internal("data/button.json"));
    TextureRegion image = new TextureRegion(btnTexture);
    TextureRegion flippedImage = new TextureRegion(image);
    flippedImage.flip(true, true);
    TextButtonStyle style = new TextButtonStyle();
    style.up = new TextureRegionDrawable(image);
    style.down = new TextureRegionDrawable(flippedImage);
    style.font = defaultFont;
    return new TextButton(text, style);
}
失败的地方:

{
        resources: {
                com.badlogic.gdx.graphics.Color: {
                        white: { r: 1, g: 1, b: 1, a: 1 },
                        downFontColor: { r: 1, g: 0.1, b: 0.2, a: 1 }
                },
                com.badlogic.gdx.graphics.g2d.BitmapFont: {
                        default-font: { file: default.fnt }
                }
        },
        styles: {
                com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
                        default: {
                                font: default-font, 
                                downFontColor: downFontColor,
                                fontColor: white
                        }
                }
        }
 }  
    Skin skin = new Skin(Gdx.files.internal("data/button.json"));
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:72)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.createButton(MenuScreen.java:105)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.create(MenuScreen.java:47)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.show(MenuScreen.java:131)
    at com.badlogic.gdx.Game.setScreen(Game.java:62)
    at eu.loecken.tools.virtuallampsi.MainGame.create(MainGame.java:48)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:125)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:596)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:93)
    ... 8 more
Caused by: com.badlogic.gdx.utils.SerializationException: 
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:424)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:1)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:762)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:409)
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:594)
    ... 9 more
Caused by: java.lang.ClassNotFoundException: resources
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:422)
    ... 13 more
private final BitmapFont defaultFont = new BitmapFont(
        Gdx.files.internal("data/default.fnt"), false);
private final Texture btnTexture = new Texture(
        Gdx.files.internal("buttons/lvl.png"));

private Button createButton(String text) {
    // Initialize skin
    // Skin skin = new Skin(Gdx.files.internal("data/button.json"));
    TextureRegion image = new TextureRegion(btnTexture);
    TextureRegion flippedImage = new TextureRegion(image);
    flippedImage.flip(true, true);
    TextButtonStyle style = new TextButtonStyle();
    style.up = new TextureRegionDrawable(image);
    style.down = new TextureRegionDrawable(flippedImage);
    style.font = defaultFont;
    return new TextButton(text, style);
}
例外情况:

{
        resources: {
                com.badlogic.gdx.graphics.Color: {
                        white: { r: 1, g: 1, b: 1, a: 1 },
                        downFontColor: { r: 1, g: 0.1, b: 0.2, a: 1 }
                },
                com.badlogic.gdx.graphics.g2d.BitmapFont: {
                        default-font: { file: default.fnt }
                }
        },
        styles: {
                com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
                        default: {
                                font: default-font, 
                                downFontColor: downFontColor,
                                fontColor: white
                        }
                }
        }
 }  
    Skin skin = new Skin(Gdx.files.internal("data/button.json"));
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:72)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.createButton(MenuScreen.java:105)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.create(MenuScreen.java:47)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.show(MenuScreen.java:131)
    at com.badlogic.gdx.Game.setScreen(Game.java:62)
    at eu.loecken.tools.virtuallampsi.MainGame.create(MainGame.java:48)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:125)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:596)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:93)
    ... 8 more
Caused by: com.badlogic.gdx.utils.SerializationException: 
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:424)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:1)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:762)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:409)
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:594)
    ... 9 more
Caused by: java.lang.ClassNotFoundException: resources
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:422)
    ... 13 more
private final BitmapFont defaultFont = new BitmapFont(
        Gdx.files.internal("data/default.fnt"), false);
private final Texture btnTexture = new Texture(
        Gdx.files.internal("buttons/lvl.png"));

private Button createButton(String text) {
    // Initialize skin
    // Skin skin = new Skin(Gdx.files.internal("data/button.json"));
    TextureRegion image = new TextureRegion(btnTexture);
    TextureRegion flippedImage = new TextureRegion(image);
    flippedImage.flip(true, true);
    TextButtonStyle style = new TextButtonStyle();
    style.up = new TextureRegionDrawable(image);
    style.down = new TextureRegionDrawable(flippedImage);
    style.font = defaultFont;
    return new TextButton(text, style);
}
更新:这一个也在工作:

{
        resources: {
                com.badlogic.gdx.graphics.Color: {
                        white: { r: 1, g: 1, b: 1, a: 1 },
                        downFontColor: { r: 1, g: 0.1, b: 0.2, a: 1 }
                },
                com.badlogic.gdx.graphics.g2d.BitmapFont: {
                        default-font: { file: default.fnt }
                }
        },
        styles: {
                com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
                        default: {
                                font: default-font, 
                                downFontColor: downFontColor,
                                fontColor: white
                        }
                }
        }
 }  
    Skin skin = new Skin(Gdx.files.internal("data/button.json"));
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:72)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.createButton(MenuScreen.java:105)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.create(MenuScreen.java:47)
    at eu.loecken.tools.virtuallampsi.screens.MenuScreen.show(MenuScreen.java:131)
    at com.badlogic.gdx.Game.setScreen(Game.java:62)
    at eu.loecken.tools.virtuallampsi.MainGame.create(MainGame.java:48)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:125)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:596)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:93)
    ... 8 more
Caused by: com.badlogic.gdx.utils.SerializationException: 
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:424)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:1)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:762)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:409)
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:594)
    ... 9 more
Caused by: java.lang.ClassNotFoundException: resources
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:422)
    ... 13 more
private final BitmapFont defaultFont = new BitmapFont(
        Gdx.files.internal("data/default.fnt"), false);
private final Texture btnTexture = new Texture(
        Gdx.files.internal("buttons/lvl.png"));

private Button createButton(String text) {
    // Initialize skin
    // Skin skin = new Skin(Gdx.files.internal("data/button.json"));
    TextureRegion image = new TextureRegion(btnTexture);
    TextureRegion flippedImage = new TextureRegion(image);
    flippedImage.flip(true, true);
    TextButtonStyle style = new TextButtonStyle();
    style.up = new TextureRegionDrawable(image);
    style.down = new TextureRegionDrawable(flippedImage);
    style.font = defaultFont;
    return new TextButton(text, style);
}

这就是您的json文件应该是什么样子,根据

正如您所看到的,您得到了异常,因为它查找“resources”类。。 因此,只需将其更改为上面的模板,例如:

{
    com.badlogic.gdx.graphics.Color: {
            white: { r: 1, g: 1, b: 1, a: 1 },
            red: { r: 1, g: 0, b: 0, a: 1 },
            yellow: { r: 0.5, g: 0.5, b: 0, a: 1 },
    },
    com.badlogic.gdx.graphics.g2d.BitmapFont: {
            medium: { file: default.fnt }
    },
    com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
            default: {
                    down: button, up: button,
                    font: medium, fontColor: white
            },
            green: {
                    down: button, up: button,
                    font: medium, fontColor: { r: 0, g: 1, b: 0, a: 1 }
            }
    }
}

p.S按钮是一个真正的图像资源
另外,我非常确定您的皮肤json文件模板适用于旧版本的libgdx

完整文件路径是什么?它在android资产文件夹中吗?是的,是的。我会编辑这个问题…就这样,谢谢。你说得对,好像我用了一个旧模板。