Я работаю над проектом Android, который использует классы и методы из отдельного JAR-файла, который я также создаю, и проблема связана с определенным классом util, который называется XpathUtil
, который бросает VerifyError
каждый раз, когда я пытаюсь вызывая один из своих статических методов.java.lang.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 не работает.
редактировать: здесь исключение:
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
Было бы полезно, если бы вы указали фактический текст ошибки, включая стек. Есть несколько вещей, которые могут вызвать «VerifyErrors», и на данный момент невозможно сделать больше, чем предполагать. –
Если у вас есть источник jar, можете ли вы попробовать включить источник вместо jar в основной проект, чтобы узнать, существует ли проблема? Просто чтобы убедиться, что утилита не использует то, что не поддерживается в Android. –
Вот как я установил Suresh, я сначала добавил весь проект в путь сборки, перейдя в eclipse> properties> java build path> projects. Я включу фактическое исключение – jonney