据我一直担心或在实践中看到,当在运行时找不到引用的类时,您会收到该错误。我非常确定 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/