2011-07-07 80 views
0

我为我的公司编写了一个Android应用程序,并且由于它对我运行良好,所以出现了一些崩溃报告以及我从未有过的错误。 一个我不知道如何解决的是服务中的java.lang.verifyError。在某些设备上发生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; 
} 
+0

java.lang.VerifyError的doc说这个“当”验证器“检测到一个类文件虽然格式良好,但包含某种内部不一致或安全问题时抛出。”所以你可能需要发布更多的代码给人们来帮助你。 –

+0

你在程序中使用外部库吗?特别是,你是从ConnectionHelper.getTicketRequestJsonString方法引用任何外部库吗?看到这里 - http://stackoverflow.com/questions/668788/android-java-lang-verifyerror。 – Perception

+0

什么是错误信息? –

回答

0

当Android的尝试加载指的事情是不是一类时发生VerifyError可用。在Android 2.1设备上运行时,会加载一个引用Android 3.0类的类。

What can I do to fix the problem?

确定具体不能加载,然后确定如何处理该问题。例如,有一些技巧可以避免在Android 2.1设备上加载Android 3.0类,同时仍然在Android 3.x设备上使用Android 3.0类。

+0

尽你可能看到,这个类的ConnectionHelper与Android SDK本身无关。此外,我没有使用android库来获得更高的API级别,然后我的构建级别 –

+0

@Rafael T:“正如你所见” - 不,我看不到,因为你距离数千英里,而且你的显示器已经打开错的方向。如果你认为你把整个课堂粘贴到你的问题上,你就错了。 “另外我没有使用android库来获取更高的API级别,然后我的构建级别” - 这并不重要。重要的是什么设备运行你的应用程序,如果你正在使用这些设备上不存在的类。 – CommonsWare

+0

抱歉,因为“你可以看到”。我认为stackTrace指向不存在的Class,并指向ConnectionHelper。 –

0

我在这里有同样的问题;并最终发现受影响的班级使用

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

此失败与Android 2.3上的VerifyError。

移除使用NetworkOnMainThreadException,它再次在2.3上工作。

相关问题