【问题标题】:Eclipse dalvik Link of 'Tween Engine' class fails on android but works on desktop'Tween Engine' 类的 Eclipse dalvik 链接在 android 上失败,但在桌面上工作
【发布时间】:2014-03-03 05:20:27
【问题描述】:

我正在使用libGDX 为安卓和台式电脑创建游戏。对于过渡屏幕,我正在使用Universal Tween engine。桌面版运行完美,但每当我尝试运行 android 版时,我都会收到 Fatal Exception。异常发生为NoClassDefFoundfor SpriteTween 类,但它存在并且在我的桌面游戏中成功检测到。

03-03 11:04:17.192: I/System.out(21831): TOUCHED
03-03 11:04:19.264: I/System.out(21831): Click: Level2
03-03 11:04:19.264: I/dalvikvm(21831): Could not find method aurelienribon.tweenengine.TweenManager.update, referenced from method com.DC.my_packet_journey.TransitionScreen2.render
03-03 11:04:19.264: W/dalvikvm(21831): VFY: unable to resolve virtual method 241: Laurelienribon/tweenengine/TweenManager;.update (F)V
03-03 11:04:19.264: D/dalvikvm(21831): VFY: replacing opcode 0x6e at 0x0011
03-03 11:04:19.264: I/dalvikvm(21831): Failed resolving Lcom/DC/my_packet_journey/SpriteTween; interface 88 'Laurelienribon/tweenengine/TweenAccessor;'
03-03 11:04:19.264: W/dalvikvm(21831): Link of class 'Lcom/DC/my_packet_journey/SpriteTween;' failed
03-03 11:04:19.264: E/dalvikvm(21831): Could not find class 'com.DC.my_packet_journey.SpriteTween', referenced from method com.DC.my_packet_journey.TransitionScreen2.show
03-03 11:04:19.264: W/dalvikvm(21831): VFY: unable to resolve new-instance 127 (Lcom/DC/my_packet_journey/SpriteTween;) in Lcom/DC/my_packet_journey/TransitionScreen2;
03-03 11:04:19.264: D/dalvikvm(21831): VFY: replacing opcode 0x22 at 0x004a
03-03 11:04:19.264: I/dalvikvm(21831): Failed resolving Lcom/DC/my_packet_journey/SpriteTween; interface 88 'Laurelienribon/tweenengine/TweenAccessor;'
03-03 11:04:19.264: W/dalvikvm(21831): Link of class 'Lcom/DC/my_packet_journey/SpriteTween;' failed
03-03 11:04:19.264: D/dalvikvm(21831): DexOpt: unable to opt direct call 0x01f2 at 0x4c in Lcom/DC/my_packet_journey/TransitionScreen2;.show
03-03 11:04:19.274: D/dalvikvm(21831): DexOpt: unable to opt direct call 0x00f0 at 0x54 in Lcom/DC/my_packet_journey/TransitionScreen2;.show
03-03 11:04:19.274: I/dalvikvm(21831): Failed resolving Lcom/DC/my_packet_journey/TransitionScreen2$1; interface 89 'Laurelienribon/tweenengine/TweenCallback;'
03-03 11:04:19.274: W/dalvikvm(21831): Link of class 'Lcom/DC/my_packet_journey/TransitionScreen2$1;' failed
03-03 11:04:19.274: D/dalvikvm(21831): DexOpt: unable to opt direct call 0x0261 at 0x5b in Lcom/DC/my_packet_journey/TransitionScreen2;.show
03-03 11:04:19.274: I/dalvikvm(21831): DexOpt: unable to optimize static field ref 0x000b at 0x6a in Lcom/DC/my_packet_journey/TransitionScreen2;.show
03-03 11:04:19.304: W/dalvikvm(21831): threadid=11: thread exiting with uncaught exception (group=0x41dfe8b0)
03-03 10:35:23.918: E/AndroidRuntime(20079): FATAL EXCEPTION: GLThread 14763
03-03 10:35:23.918: E/AndroidRuntime(20079): java.lang.NoClassDefFoundError: com.DC.my_packet_journey.SpriteTween
03-03 10:35:23.918: E/AndroidRuntime(20079):    at com.DC.my_packet_journey.TransitionScreen5.show(TransitionScreen5.java:67)
03-03 10:35:23.918: E/AndroidRuntime(20079):    at com.badlogic.gdx.Game.setScreen(Game.java:62)
03-03 10:35:23.918: E/AndroidRuntime(20079):    at com.DC.my_packet_journey.PagedScrollPaneTest$1.clicked(PagedScrollPaneTest.java:226)
03-03 10:35:23.918: E/AndroidRuntime(20079):    at com.badlogic.gdx.scenes.scene2d.utils.ClickListener.touchUp(ClickListener.java:84)
03-03 10:35:23.918: E/AndroidRuntime(20079):    at com.badlogic.gdx.scenes.scene2d.InputListener.handle(InputListener.java:57)
03-03 10:35:23.918: E/AndroidRuntime(20079):    at com.badlogic.gdx.scenes.scene2d.Stage.touchUp(Stage.java:343)
03-03 10:35:23.918: E/AndroidRuntime(20079):    at com.badlogic.gdx.backends.android.AndroidInput.processEvents(AndroidInput.java:360)
03-03 10:35:23.918: E/AndroidRuntime(20079):    at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:498)
03-03 10:35:23.918: E/AndroidRuntime(20079):    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1523)
03-03 10:35:23.918: E/AndroidRuntime(20079):    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

LibGDX 对任一版本都使用相同的基本代码。因此,从技术上讲,如果桌面版可以正常工作,那么 android 版本也应该可以正常工作。

我从 logCat 添加了更多条目,我想这一切都是由于 SpriteTween 的 Link 类失败而发生的。为什么这只发生在android上?

【问题讨论】:

  • 这不应该发生。您是否使用正确的库导出?您是否将库复制粘贴到项目中?
  • 我还没有导出它,我只是在我的设备上运行它来检查它是否工作。我已经在我的构建路径中添加了这些库,但我没有将它们复制粘贴到我的项目文件夹中.
  • 那也许是你的问题。我所做的是在我的项目中创建一个名为 libs 的文件夹,并将我的所有库复制粘贴到其中。然后,当我创建构建路径时,我会引用项目中的库。但是一旦出口,我认为它没有任何区别。我只是把它扔在那里。
  • 好的,我试试你的方法,看看是否有效
  • @stuntmania 抱歉,但它不起作用。我仍然收到异常 NoClassDefFound 但仅在 android 上。

标签: java android exception libgdx tween


【解决方案1】:

我提到了这个问题here。事实证明,在我的 android 项目 buildpath>order & export 中,android 4.0.3 标签未被选中。通过选中该框,我的问题得到了解决。

就像stuntmania 提到的那样,问题不在于补间引擎,而在于我的构建路径。 dalvik 机器无法检测到适当的库,因此只有 android 版本无法正常运行,而桌面版本运行良好。

【讨论】:

  • 酷!现在玩得开心编码:)
  • 很好,我遇到了同样的问题,并且正在努力解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
相关资源
最近更新 更多