【发布时间】: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