- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在为 minSDK 8 和 targetSDK 11 构建。
<uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="11"/>
我在 logcat 中得到这个:
WARN/dalvikvm(2114): VFY: rejected Lcom/examplecompany/project/TidalStreams/Data/gTidalStreamsHourlyHW;.<clinit> ()V
WARN/dalvikvm(2114): Verifier rejected class Lcom/digitaliridium/tides/TidalStreams/Data/gTidalStreamsHourlyHW;
我有两个 Desires,还有其他几个设备;一个运行 2.2.2,一个运行 2.3.3。
在 2.2.2 上,我在这一行得到一个 java.lang.VerifyError
:
public void onCreate(){
...
gTidalStreamsHourlyHW.init();
...
}
这是 init()
方法。这是一个非常普通的类的唯一方法。
public static void init(){
int insertPosition;
System.arraycopy(gTidalStreamHourlyHW1, 0, gTidalStreamHourlyHW, 0, gTidalStreamHourlyHW1.length);
insertPosition = gTidalStreamHourlyHW1.length;
System.arraycopy(gTidalStreamsHourlyHW2.gTidalStreamHourlyHW1, 0, gTidalStreamHourlyHW, insertPosition, gTidalStreamsHourlyHW2.gTidalStreamHourlyHW1.length);
insertPosition += gTidalStreamsHourlyHW2.gTidalStreamHourlyHW1.length;
System.arraycopy(gTidalStreamsHourlyHW3.gTidalStreamHourlyHW1, 0, gTidalStreamHourlyHW, insertPosition, gTidalStreamsHourlyHW3.gTidalStreamHourlyHW1.length);
...
gTidalStreamsHourlyHW
是一个大数据数组,大约 350k。我不得不将它拆分成多个文件以绕过 Java 的 64k 编译单元限制。
init
方法简单地使用 System.arraycopy() 将这些多个静态数组连接成一个。
我试过将 minSDK 级别降低到 7,但问题是一样的。
它在运行 2.2.2 的模拟器中也会失败。
最佳答案
我是 Android 的忠实粉丝,但有时它是站不住脚的:(
错误中有一条线索表明错误与静态初始值设定项有关;这是 <clinit>
“方法”名称在:
WARN/dalvikvm(2114): VFY: rejected Lcom/examplecompany/project/TidalStreams/Data/gTidalStreamsHourlyHW;.<clinit> ()V
这表明错误可能与 static { ... }
有关初始化 block ,或一些 static
的初始化类(class)成员。
我的类有一个静态数组初始化器:
public static shcTidalStreamPointStruct[] gTidalStreamHourlyHW1 = new shcTidalStreamPointStruct[]{
new shcTidalStreamPointStruct("000A",48.766667,-10.066667,51.116667,1.316667,"89",95,0.8,0.4,125,0.9,0.4,172,0.7,0.4,216,0.7,0.4,242,0.8,0.4,261,0.9,0.4,281,0.7,0.4,305,0.7,0.4,339,0.6,0.3,14,0.6,0.3,58,0.6,0.3,71,0.7,0.3,91,0.7,0.4,"GB",0),
new shcTidalStreamPointStruct("000B",49.533333,-9.983333,51.116667,1.316667,"89",122,0.6,0.3,166,0.8,0.4,192,0.9,0.4,213,0.9,0.5,239,0.9,0.5,255,0.9,0.5,286,0.9,0.4,330,0.7,0.4,9,0.9,0.4,38,1,0.5,52,1.1,0.5,68,0.9,0.5,104,0.6,0.3,"GB",0),
new shcTidalStreamPointStruct("000C",48.898333,-9.163333,51.116667,1.316667,"89",102,0.4,0.2,118,0.6,0.3,172,0.7,0.4,197,0.7,0.4,212,0.7,0.4,250,0.7,0.4,283,0.5,0.3,321,0.3,0.2,337,0.5,0.3,13,0.7,0.4,33,0.7,0.4,54,0.5,0.3,98,0.4,0.2,"GB",0),
共有283个元素。
我只用这段代码构建了一个测试项目,并验证了在 2.2 及以下版本上,它失败了。在 2.3 及更高版本上,它有效。
问题是初始化程序中的行数!我一次取出一行,直到剩下 197 行,它起作用了!
因此,除了 Java 的 64k 编译单元限制外,Android 类加载器中还有一些与静态初始化的行数/大小相关的未记录限制(或错误)。
解决方法是进一步拆分我的文件以减少行数。 Fugggllly....
关于android - java.lang.VerifyError 在 2.2.2 但不是 2.3.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15731320/
我有一个Gradle 4.4.1脚本,偶尔会失败。这通常在运行test任务之前在多台计算机上发生。 这是相关的日志(在运行gradlew test --info时获取): Up-to-date che
我正在使用“打开模块设置 > 新建 > 导入 .JAR/.AAR 包”向我的项目(.aar)添加一个库。 它在应用程序打开时正确构建,但是当实例化该库的第一个类时,它给我提供了该类的“Java.lan
我在 J2EE 容器中偶尔收到以下错误。有时容器会启动,没有任何问题,有时容器不会启动,因为这个错误,以前有人见过这个错误吗...?可能是什么原因..?它是否涉及任何类加载器/安全问题..? java
我正在为 2.2 (minSdkVersion=8) 开发,突然出现这个错误: arbitrarily rejecting large method (regs=75 count=28584) rej
我在我的应用程序中使用指纹传感器。我知道 api 可用于 marshmallow 及以上操作系统。因此,在我的类里面运行时,我正在动态检查 sdk 版本。 即使指纹代码不执行,我在 4.0 andro
ERROR [org.springframework.web.context.ContextLoader:313] - Context initialization failed java.lang.
我正在使用Hadoop的Java项目中工作,并且有一个java.lang.VerifyError,我不知道如何解决它。我看到有人遇到相同类型的问题,但没有答案,或者解决方案在我的情况下不起作用。 我的
我正在扩展 JFreeChart ChartComposite 类。当我尝试创建扩展类的实例时,我收到 java.lang.VerifyError : .... 函数调用的不兼容对象参数 错误。 最佳
我使用 jcifs-1.3.17 库来检查共享文件夹上的一些文件。一周前,我发现我的代码无法正常工作。我遇到 500 服务器错误,如下所示: (类:jcifs/smb/NtlmPasswordAuth
有时我可以在崩溃报告服务日志中找到如下所示 Caused by: java.lang.VerifyError: com/google/android/gms/auth/GoogleAuthUtil
我正在开展一个项目,我们希望在该项目中重用近期类似项目的代码。然而,这一次,我们希望将代码拆分到三个库中,以便在未来的项目中更容易使用,我们也将在这些项目中重复使用这些代码。 我将像在 Netbean
我正在将我的appengine-项目从ant构建迁移到maven,我使用带有JDO 2的java 8和maven-datanucleus插件来进行类增强和maven appengine-plugin
提前道歉,但我以前从未见过这个错误,也不知道该包含什么。我正在使用 NetBeans 并突然开始出现此错误: Exception in thread "AWT-EventQueue-0" java.l
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我有一个应用程序,它使用 overridePendingTransition 在从一个 Activity 转换到另一个 Activity 时执行一些自定义动画。这在 Android 2.0 中可用,但
目前正在经历一场试图修复 java.lang.verifyerror 的噩梦,遇到了 eclipse 问题,所以我决定卸载并重新安装它,一切似乎都很正常,直到我尝试启动该应用程序,那时我注意到我无法启
我最近开始为我自己的语言编写一个编译器,但是当我调用 main 方法时它开始抛出异常。它适用于我的其他测试类,但它不想使用这个。据我所知,在此类和其他类之间调用方法的方式没有任何不同。这是异常(exc
我正在开发一个 Android 项目,该项目使用我正在创建的单独 JAR 文件中的类和方法,问题出在一个名为 XpathUtil 的特定实用程序类,该类抛出一个 VerifyError 每次我尝试调用
public class Config { public static Ref s = new Ref(new Config()); static class Ref {
在编写一些 Java 代码时,我遇到了一个我无法识别的异常,即 java.lang.VerifyError。一些谷歌搜索表明这通常是一个 jvm/javac 错误,我很好奇我的情况是否如此。 我怀疑的
我是一名优秀的程序员,十分优秀!