【问题标题】:java.lang.VerifyError occurs on some devicesjava.lang.VerifyError 在某些设备上发生
【发布时间】:2011-07-07 20:38:27
【问题描述】:

我为我的公司编写了一个 Android 应用程序,由于它对我来说运行良好,因此有一些我自己从未遇到过的带有错误的崩溃报告。 我不知道如何解决的是服务中的 java.lang.verifyError。

崩溃的行是:

String post_request = ConnectionHelper.getTicketRequestJsonString(true, ticketIdsToDownload);

ConnectionHelper 是一个只包含返回字符串的静态函数的类。我可以做些什么来解决这个问题?

编辑:如果有帮助,我会发布一些代码,而不是认为我遇到了“安全问题”

public static String getTicketRequestJsonString(boolean details, List<String> ticketIds){
    String ticketString = "tickets:[";
    int count = ticketIds.size() - 1;
    for (int i = 0; i <= count; i++){
        String s = ticketIds.get(i);
        ticketString += s
        ticketString += i != count ? "," : "]";
    }
    return ticketString;
}

【问题讨论】:

  • java.lang.VerifyError 的文档说“当“验证程序”检测到类文件虽然格式良好,但包含某种内部不一致或安全问题时抛出。”因此,您可能需要发布更多代码,以便人们能够帮助您。
  • 您是否在程序中使用了外部库?特别是,您是否从 ConnectionHelper.getTicketRequestJsonString 方法中引用任何外部库?见这里 - stackoverflow.com/questions/668788/…
  • @Perception 是的,我使用,但不是在此方法中,正如您在我的编辑中看到的那样
  • @Andreas_D java.lang.VerifyError: namespace.helper.ConnectionHelper at namespace.Service.continueLoggedInLogic(TService.java:399)

标签: java android exception-handling verifyerror


【解决方案1】:

当 Android 尝试加载引用不可用事物的类时,会出现VerifyError。例如,在 Android 2.1 设备上运行时加载引用 Android 3.0 类的类。

我能做些什么来解决这个问题?

确定它无法加载的具体内容,然后确定如何处理。例如,有一些技巧可以避免在 Android 2.1 设备上加载 Android 3.0 类,同时仍然在 Android 3.x 设备上使用 Android 3.0 类。

【讨论】:

  • 如您所见,ConnectionHelper这个类与Android SDK本身无关。此外,我没有将 android 库用于更高的 API 级别,然后是我的构建级别
  • @Rafael T:“如你所见”——不,我看不到,因为你在千里之外,而且你的显示器转向错误的方向。如果您认为您将整个课程粘贴到您的问题中,那您就错了。 “另外,我没有将 android 库用于更高的 API 级别,然后是我的构建级别”——这没关系。重要的是哪些设备正在运行您的应用程序,以及您是否使用了这些设备上不存在的类。
  • 抱歉“如您所见”。我假设 stackTrace 指向的是不存在的类,并且它指向 ConnectionHelper。
  • @Rafael T:不,堆栈跟踪不指向不存在的Class,而是指向不存在的引用内容的Class在那里。
  • 所以我的 ConnectionHelper 中有一种方法使用 GSON 将 JSON 转换为原生 Java 对象。这个 Lib 在我的构建路径中。会不会是,Gson 使用的东西,不是所有的 Android 都有?
【解决方案2】:

我在这里遇到了同样的问题;最后发现受影响的类使用了

try {
localIP = InetAddress.getLocalHost().getHostAddress();
} catch (NetworkOnMainThreadException ex) {         
}

这在 Android 2.3 上因 VerifyError 而失败。

删除了 NetworkOnMainThreadException 的使用,它再次适用于 2.3。

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 2014-10-17
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多