java.lang.VerifyError - PullRequest
       4

java.lang.VerifyError

2 голосов
/ 05 ноября 2010

Я работаю над проектом Android, который использует классы и методы из отдельного файла JAR, который я также создаю, и проблема связана с определенным утилитным классом под названием XpathUtil, который выдает VerifyError каждый раз, когда я пытаюсь вызвать один из его статических методов.

Вот как выглядит мой класс XpathUtil:

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;
 }
}

И это именно та строка, где происходит исключение из основного проекта, с которым я работаю:

mDocument = XpathUtil.createXpathDocument(xml);

Как вы можете видеть, все, что я делаю, - это простой вызов createXpathDocument, который находится из отдельного файла JAR, который был успешно импортирован и включен в мой путь сборки через eclipse (любой другой вызов, который я делаю в другие классы из этого банка работает нормально). Так что я не совсем уверен, в чем проблема.

Я попытался выполнить очистку и сборку как основного проекта, так и другого проекта, который я использую, и затем экспортировать его в фактический файл JAR для использования сторонними приложениями, но по какой-то странной причине этот XpathUtil не работает.

edit: вот исключение:

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

Ответы [ 2 ]

2 голосов
/ 25 июня 2012

Когда я обновляю ADT tool до версии 18.0.0.v201203301601-306762, я также получаю исключение при запуске приложения .... наконец-то я нашел решение проблемы обновления adt.Когда вы создаете проект приложения для Android, вам нужно перейти к проекту Свойства-> Порядок и экспорт , и позволить установить флажок стороннего jar-файла, очистить и перестроить проект.Проблема будет исправлена ​​...... например let the third party jar checkbox to be checked

2 голосов
/ 05 ноября 2010

Типичный сценарий, приводящий к VerifyErrors: у вас есть две разные версии библиотеки, скомпилируйте с версией 1 и запустите с версией 2. В этом случае, особенно если сигнатуры методов изменились, JVM может жаловаться на VerifyError.

Итак, для вашего случая: дважды проверьте, что вы используете один и тот же файл XPathUtil.class для сборки и выполнения.Может быть, у JVM есть старая версия этого класса на пути к классам (может быть, у него есть даже более одной версии и выбрана неправильная).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...