java - 无法弄清楚这个 NoClassDefFoundError - 类应该在运行时存在?

标签 java android libgdx

据我一直担心或在实践中看到,当在运行时找不到引用的类时,您会收到该错误。我非常确定 Tap 是通过 MenuScreen 的初始化创建的,但我可能做错了。这是我第一次尝试在 LibGDX 中使用菜单或使用多个屏幕。

这是 MenuScreen 类的第一部分,在 AndroidLauncher.java 中初始化 (initalize(new MenuScreen(new Tap()), config);)

public class MenuScreen extends Game implements Screen {

    ...

    Game g;
    public MenuScreen(Game g) {
        create();
        this.g = g;
    }

以及 Tap.java 的唯一相关部分

public class Tap extends Game implements ActionListener, Screen {  
...  
public Tap() {
    create();
}

我似乎无法弄清楚为什么它不起作用。我错过了一些明显的东西吗?我尝试了一些不同的事情,但在大多数情况下,我还没有足够的理解来做出任何真正的改变。

谢谢。

编辑:堆栈跟踪

12-15 22:42:35.614: E/AndroidRuntime(16426): FATAL EXCEPTION: main
12-15 22:42:35.614: E/AndroidRuntime(16426): java.lang.NoClassDefFoundError: com.joelhunter.game.Tap
12-15 22:42:35.614: E/AndroidRuntime(16426):    at com.joelhunter.game.android.AndroidLauncher.onCreate(AndroidLauncher.java:16)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at android.app.Activity.performCreate(Activity.java:5133)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at android.app.ActivityThread.access$600(ActivityThread.java:150)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at android.os.Looper.loop(Looper.java:213)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at android.app.ActivityThread.main(ActivityThread.java:5225)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at java.lang.reflect.Method.invokeNative(Native Method)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at java.lang.reflect.Method.invoke(Method.java:525)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
12-15 22:42:35.614: E/AndroidRuntime(16426):    at dalvik.system.NativeStart.main(Native Method)

最佳答案

您误解了游戏和屏幕的使用方式。

您必须只有一款游戏:

public class Tap extends Game{  
...  
public Tap() {
    setScreen(new MenuScreen(this));
}

和几个屏幕:

public class MenuScreen implements Screen {

...

Game g;
public MenuScreen(Game g){
    create();
    this.g = g;

    //if touch on "play" button:
    g.setScreen(new GameScreen(this));
}

例如游戏屏幕:

public class GameScreen implements Screen {

...

Game g;
public GameScreen(Game g){
    create();
    this.g = g;
}

等等等等

还要检查核心项目是否添加为 Android 和桌面项目的依赖项。

右键Android/Desktop -> Java Build Path -> Projects选项卡,检查是否添加了核心项目。如果没有,请添加它。

关于java - 无法弄清楚这个 NoClassDefFoundError - 类应该在运行时存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27498993/

相关文章:

java - Log4j JMS 附加程序示例

java - 如何让struts2在浏览器中加载动态生成的pdf文件

java - (LIBGDX) 如何清理我的应用程序使用的 RAM 内存?

java - 对在 libgdx 中实现渲染方法的不同方法的疑问

java - 如何拆分数组中的字符串并与其建立关联数组?

java - 使用 Colt 库的简单矩阵运算(2D 和 3D)

android - 使用 Android Studio 3.1 的构建时间较长

Android - 如何导航 Activity 堆栈/任务

java - 如何在java中的sqlite db中获取并自动输入当前日期?

libgdx - libgdx什么尺寸的纹理?