【问题标题】:Exception java.lang.NoSuchMethodError on java.util.Deque.pushjava.util.Deque.push 上的异常 java.lang.NoSuchMethodError
【发布时间】:2013-06-04 00:37:12
【问题描述】:

真是奇怪,谷歌开发者控制台,报错页面。

看起来,我的应用程序在多个 Android 设备上崩溃了。提供的异常日志说:

java.lang.NoSuchMethodError: java.util.Deque.push
at com.larvalabs.svgandroid.SVGParser$SVGHandler.<init>(SVGParser.java:869)
at com.larvalabs.svgandroid.SVGBuilder.build(SVGBuilder.java:147)
at myapp.graphic.PictureCache.getSvgPicture(PictureCache.java:59)
at myapp.graphic.PictureCache.getSvgPictureDrawable(PictureCache.java:65)
at myapp.activities.startup.ActivityStartup.setupCustomGraphic(ActivityStartup.java:92)
at myapp.activities.startup.ActivityStartup.onCreate(ActivityStartup.java:35)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
...

我正在使用那个库:

http://code.google.com/p/svg-android-2/

我包含了源代码,而不是简单地链接外部库。

代码似乎在java.util.Deque.push 上失败(NoSuchMethodError)。不是我复制粘贴的源代码的问题,运行时好像没有找到dequeue方法!怎么可能?无法想象。

编辑: 双端队列已定义:

Deque<Matrix> matrixStack = new LinkedList<Matrix>();

引发问题的代码:

matrixStack.push(new Matrix());

new Matrix() 是否有可能返回 push() 方法不接受的值?

【问题讨论】:

  • 检查您是否已将 adt 更新到 rev 22?如果是这样,请右键单击您的项目 java 构建路径选择顺序导出选项卡,确保您已检查项目和 android 项目的 android 私有库。这只是一个建议。
  • 看起来 java.util.Deque.push 是在 Java.6 中引入的,在旧版本中可能不可用。我建议你检查应用程序失败的设备中的运行时环境。
  • @scubadiver 但是等等...Deque 在 Java 5 中甚至都不存在,所以它应该在 Java 6 之前的版本上以 java.lang.NoClassDefFoundError: java.util.Deque 失败。也许 Android 库是 Java 6 或7 但不包含push 方法。
  • 我更新了问题的更多细节。

标签: java android exception svg queue


【解决方案1】:

您的项目引用了仅在 API 级别 9 中添加的 java.util.Deque

(http://developer.android.com/reference/java/util/Deque.html)

API 级别

【讨论】:

  • 我的 manifest.xml 中有 android:minSdkVersion="8" 和 android:minSdkVersion="8" 并且我没有收到编译错误/警告(我使用 Android 2.3.3 库)!
  • Deque 也存在于您的 JDK 中(从 1.6 开始),这就是它可能不会警告您的原因。但是在运行时,在小于 9 的设备上,它会失败。我不是警告如何工作的专家。我非常有信心这是你的问题。您是否在 API 级别
  • 出现问题是因为我在 android:minSdkVersion="8" android:targetSdkVersion="8" 时使用的是 Android 2.3.3 (Api 9) 库。通过设置 android:minSdkVersion="9" android:targetSdkVersion="9" 得到 Ken 的贡献后解决了。
猜你喜欢
  • 2012-06-21
  • 2019-02-09
  • 2013-07-24
  • 2021-09-04
  • 2012-09-30
  • 2020-08-30
  • 1970-01-01
  • 2018-07-04
  • 2019-06-18
相关资源
最近更新 更多