Android版Olingo OData 2.0-对javax.xml.stream.XMLInputFactory的依赖性

Android版Olingo OData 2.0-对javax.xml.stream.XMLInputFactory的依赖性,android,odata,compatibility,classnotfoundexception,olingo,Android,Odata,Compatibility,Classnotfoundexception,Olingo,我尝试在Android中使用ApacheOlingoOData2.0实现ODatav2客户端 将客户端类作为java类执行工作正常,但我无法在异步任务中使用相同的代码运行Android应用程序: E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 Process: com.my.app.appname, PID: 2521 java.lang.RuntimeException: An error occured while executing doIn

我尝试在Android中使用ApacheOlingoOData2.0实现ODatav2客户端

将客户端类作为java类执行工作正常,但我无法在异步任务中使用相同的代码运行Android应用程序:

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.my.app.appname, PID: 2521
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.conurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
java.util.conurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/xml/stream/XMLInputFactory;
at org.apache.olingo.odata2.core.commons.XmlHelper.createStreamReader(XmlHelper.java:41)
org.apache.olingo.odata2.core.edm.provider.EdmxProvider.parse(EdmxProvider.java:50)
org.apache.olingo.odata2.core.ep.ProviderFacadeImpl.readMetadata(ProviderFacadeImpl.java:224)
org.apache.olingo.odata2.api.ep.EntityProvider.readMetadata(EntityProvider.java:844)
at connectivity.MyClass.doInBackground(MyClass.java:153)
at connectivity.MyClass.doInBackground(MyClass.java:38)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237) <4 more...>
Caused by: java.lang.ClassNotFoundException: Didn't find class "javax.xml.stream.XMLInputFactory" on path: DexPathList[[zip file "/data/app/com.my.app.appname-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469) <12 more...>
Suppressed: java.lang.ClassNotFoundException: javax.xml.stream.XmlInputFactory
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.findClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 13 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
E/AndroidRuntime:致命异常:异步任务#1
进程:com.my.app.appname,PID:2521
java.lang.RuntimeException:执行doInBackground()时出错
在android.os.AsyncTask$3.done(AsyncTask.java:300)
位于java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
位于java.util.concurrent.FutureTask.setException(FutureTask.java:222)
位于java.util.concurrent.FutureTask.run(FutureTask.java:242)
在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
原因:java.lang.NoClassDefFoundError:解析失败:Ljavax/xml/stream/XMLInputFactory;
位于org.apache.olingo.odata2.core.commons.XmlHelper.createStreamReader(XmlHelper.java:41)
org.apache.olingo.odata2.core.edm.provider.EdmxProvider.parse(EdmxProvider.java:50)
org.apache.olingo.odata2.core.ep.ProviderFacadeImpl.readMetadata(ProviderFacadeImpl.java:224)
org.apache.olingo.odata2.api.ep.EntityProvider.readMetadata(EntityProvider.java:844)
位于connectivity.MyClass.doInBackground(MyClass.java:153)
位于connectivity.MyClass.doInBackground(MyClass.java:38)
在android.os.AsyncTask$2.call(AsyncTask.java:288)
位于java.util.concurrent.FutureTask.run(FutureTask.java:237)
原因:java.lang.ClassNotFoundException:在路径:DexPathList[[zip文件”//data/app/com.my.app.appname-2/base.apk“],NativeLibraryDirectory=[/vendor/lib,/system/lib]上未找到类“javax.xml.stream.XMLInputFactory”
位于dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:511)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:469)
抑制:java.lang.ClassNotFoundException:javax.xml.stream.XmlInputFactory
位于java.lang.Class.classForName(本机方法)
位于java.lang.BootClassLoader.findClass(ClassLoader.java:781)
位于java.lang.BootClassLoader.findClass(ClassLoader.java:841)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 还有13个
原因:java.lang.NoClassDefFoundError:使用引导类加载程序找不到类;没有可用的堆栈
我的问题是:
(如何)解决此问题?
(我在某处读到缺少的类可能不受Android支持?
切换到Apache Olingo OData 4.0会有帮助吗?
(我需要使用OData V2服务,如果Olingo V4在Android上支持,我可能会尝试迁移我的客户端…)


提前谢谢

您必须自己重新打包javax.xml.stream类,因为Android不支持xml。Olingo V4在V4下载页面上有一个专门的android打包客户端:

Olingo V2没有此功能,因为在创建V2库时,主要关注服务器端实现。这就是为什么客户端缺少很多便利的原因