首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.VerifyError

java.lang.VerifyError
EN

Stack Overflow用户
提问于 2010-11-05 19:50:35
回答 2查看 4.8K关注 0票数 2

我正在做一个Android项目,它使用了我正在创建的一个单独JAR文件中的类和方法,问题出在一个名为XpathUtil的特定util类上,每当我尝试调用它的静态方法时,它都会抛出一个VerifyError

下面是我的XpathUtil类的样子:

代码语言:javascript
复制
public class XpathUtil {

 private static XPath xpath = XPathFactory.newInstance().newXPath();
 private static String TAG = "XpathUtil";

 public static Document createXpathDocument(String xml) {
  try {

   Log.d(TAG , "about to create document builder factory");
   DocumentBuilderFactory docFactory = DocumentBuilderFactory
     .newInstance();
   Log.d(TAG , "about to create document builder ");
   DocumentBuilder builder = docFactory.newDocumentBuilder();

   Log.d(TAG , "about to create document with parsing the xml string which is: ");

   Log.d(TAG ,xml );
   Document document = builder.parse(new InputSource(
     new StringReader(xml)));

   Log.d(TAG , "If i see this message then everythings fine ");

   return document;
  } catch (Exception e) {
   e.printStackTrace();
   Log.d(TAG , "EXCEPTION OCCURED HERE " + e.toString());
   return null;
  }
 }

 public static NodeList getNodeList(Document doc, String expr) {
  try {
   Log.d(TAG , "inside getNodeList");
   XPathExpression pathExpr = xpath.compile(expr);
   return (NodeList) pathExpr.evaluate(doc, XPathConstants.NODESET);
  } catch (XPathExpressionException e) {
   e.printStackTrace();
  }
  return null;
 }

 // extracts the String value for the given expression
 public static String getNodeValue(Node n, String expr) {
  try {
   Log.d(TAG , "inside getNodeValue");
   XPathExpression pathExpr = xpath.compile(expr);
   return (String) pathExpr.evaluate(n, XPathConstants.STRING);
  } catch (XPathExpressionException e) {
   e.printStackTrace();
  }
  return null;
 }
}

这就是我正在处理的主项目中发生异常的确切代码行:

代码语言:javascript
复制
mDocument = XpathUtil.createXpathDocument(xml);

正如您所看到的,我所做的只是简单地调用createXpathDocument,该jar文件位于一个单独的jar文件中,该jar文件已经通过eclipse成功导入并包含在我的构建路径中(我从这个jar对不同类进行的任何其他调用都可以正常工作)。所以我不太确定问题出在哪里。

我尝试在主项目和我正在使用的另一个项目上进行清理和构建,然后将其导出到一个实际的jar文件中,供第三方应用程序使用,但由于某些奇怪的原因,此XpathUtil无法工作。

编辑:例外情况如下:

代码语言:javascript
复制
Uncaught handler: thread AsyncTask #1 exiting due to uncaught exception
java.lang.RuntimeException: An error occured while executing doInBackground()
   at 

android.os.AsyncTask$3.done(AsyncTask.java:200)
   at 

java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)   at 

java.util.concurrent.FutureTask.setException(FutureTask.java:124)
    at 

java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
   at 

java.util.concurrent.FutureTask.run(FutureTask.java:137) at 

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
 at 

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
  at 

java.lang.Thread.run(Thread.java:1096)
 Caused by: java.lang.VerifyError: 

com.kc.unity.agent.util.xml.XpathUtil    at com.kc.unity.agent.util.xml.ContactDescHelper.<init>

(ContactDescHelper.java:67)
   at 

com.kc.unity.agent.federation.contacts.ContactPlatformWrapper.constructContactDetails

(ContactPlatformWrapper.java:218)
  at 

com.kc.unity.agent.federation.contacts.ContactPlatformWrapper.getContactDetails

(ContactPlatformWrapper.java:101)    at 

com.kc.unified.contacts.ContactDetails.setContactFields(ContactDetails.java:154)   at com.kc.unified.contacts.ContactDetails.access$6

(ContactDetails.java:150)   at 

com.kc.unified.contacts.ContactDetails$LoadScreen.doInBackground(ContactDetails.java:79)
  at 

com.kc.unified.contacts.ContactDetails$LoadScreen.doInBackground(ContactDetails.java:1)
   at android.os.AsyncTask$2.call(AsyncTask.java:185)   at 

java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)... 4 more
EN

回答 2

Stack Overflow用户

发布于 2010-11-05 21:03:48

导致VerifyErrors的典型场景是:您有两个不同版本的库,分别使用版本1编译和版本2运行。在这种情况下,尤其是如果方法签名发生了更改,JVM可能会报错VerifyError

因此,对于您的情况:仔细检查您是否使用完全相同的XPathUtil.class文件来构建和执行。也许JVM在类路径上有这个类的旧版本(也许它甚至有多个版本,但选择了错误的版本)。

票数 2
EN

Stack Overflow用户

发布于 2012-06-25 13:22:32

当我将ADT工具升级到版本18.0.0.v201203301601-306762时,运行应用程序时也会出现异常...最后我找到了adt更新问题的解决方案。当您构建android应用程序项目时,您需要到项目属性->订购和导出,并让第三方jar复选框处于选中状态,并清理和重建项目。这个问题会被解决的……for example

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4105578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档