msgpack-java icon indicating copy to clipboard operation
msgpack-java copied to clipboard

msgpack on Android with jackson result of Failed resolution of: Lorg/msgpack/value/holder/ValueHolder

Open shiipou opened this issue 5 years ago • 1 comments

Hi, I tried to use Msgpack on android but I can't make it work.

I tried to unpack a Map<String, Object> into my app using the following piece of code :

ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory());
Map<String, Object> json = objectMapper.readValue(in, Map.class);

But it fail with the error :

java.lang.NoClassDefFoundError: Failed resolution of: Lorg/msgpack/value/holder/ValueHolder;

My Map look like :

{
  "id": "/root",
  "human_readable_id": null,
  "value": null,
  "displayValue": null,
  "items": [{
    "id": "/root/items/0",
    "human_readable_id": "8",
    "value": "a",
    "items": null
  },{
    "id": "/root/items/1",
    "human_readable_id": "9",
    "value": "b",
    "items": null
  },{
    "id": "/root/items/2",
    "human_readable_id": "6",
    "value": "c",
    "items": null
  }]
}

PS: all parameter with value as null is not send. I've post it to help you to understand my structure.

My gradle depencvies :

    implementation 'javassist:javassist:3.12.1.GA'
    implementation 'org.msgpack:msgpack-core:0.8.20'
    implementation 'org.komamitsu:jackson-dataformat-msgpack:0.0.3'

Full error :

D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: fr.hypa.keyboard, PID: 23801
    java.lang.NoClassDefFoundError: Failed resolution of: Lorg/msgpack/value/holder/ValueHolder;
        at org.msgpack.jackson.dataformat.msgpack.MessagePackParser.<init>(MessagePackParser.java:26)
        at org.msgpack.jackson.dataformat.msgpack.MessagePackParser.<init>(MessagePackParser.java:57)
        at org.msgpack.jackson.dataformat.msgpack.MessagePackFactory._createParser(MessagePackFactory.java:38)
        at org.msgpack.jackson.dataformat.msgpack.MessagePackFactory.createParser(MessagePackFactory.java:33)
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2137)
        at fr.hypa.keyboard.DAO.loadAlphabet(DAO.java:77)
        at fr.hypa.keyboard.HypaView.onKeyboardOpen(HypaView.java:138)
        at fr.hypa.keyboard.HypaView.onDraw(HypaView.java:181)
        at android.view.View.draw(View.java:21975)
        at android.gesture.GestureOverlayView.draw(GestureOverlayView.java:401)
        at android.view.View.updateDisplayListIfDirty(View.java:20852)
        at android.view.View.draw(View.java:21707)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
        at android.view.View.updateDisplayListIfDirty(View.java:20843)
        at android.view.View.draw(View.java:21707)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
        at android.view.View.updateDisplayListIfDirty(View.java:20843)
        at android.view.View.draw(View.java:21707)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
        at android.view.View.updateDisplayListIfDirty(View.java:20843)
        at android.view.View.draw(View.java:21707)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
        at android.view.View.updateDisplayListIfDirty(View.java:20843)
        at android.view.View.draw(View.java:21707)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
        at android.view.View.draw(View.java:21978)
        at com.android.internal.policy.DecorView.draw(DecorView.java:808)
        at android.view.View.updateDisplayListIfDirty(View.java:20852)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:581)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:587)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:664)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:3767)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3495)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2779)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1745)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7768)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:967)
        at android.view.Choreographer.doCallbacks(Choreographer.java:791)
        at android.view.Choreographer.doFrame(Choreographer.java:726)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "org.msgpack.value.holder.ValueHolder" on path: DexPathList[[zip file "/data/app/fr.hypa.keyboard-cXDp3Z8UZvJ6zh7I5mSYlA==/base.apk"],nativeLibraryDirectories=[/data/app/fr.hypa.keyboard-cXDp3Z8UZvJ6zh7I5mSYlA==/lib/arm64, /system/lib64, /system/product/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/AndroidRuntime:     at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        	... 52 more
I/Process: Sending signal. PID: 23801 SIG: 9
Disconnected from the target VM, address: 'localhost:8642', transport: 'socket'

shiipou avatar Sep 04 '20 13:09 shiipou

Sorry for my late response.

org.komamitsu:jackson-dataformat-msgpack has been merged into this project as org.msgpack:jackson-dataformat-msgpack. How about trying this?

    implementation 'org.msgpack:jackson-dataformat-msgpack:0.8.21'

komamitsu avatar Dec 11 '20 14:12 komamitsu