mangstadt/ez-vcard

No Class found in DavX5

Opened this issue · 1 comments

I got the below exception in DavX5 and seems it's from ez-vcard library.

EXCEPTION
java.lang.NoClassDefFoundError: ezvcard.io.scribe.ScribeIndex
	at ezvcard.io.StreamWriter.<init>(StreamWriter.java:4)
	at ezvcard.io.text.VCardWriter.<init>(VCardWriter.java:1)
	at at.bitfire.vcard4android.ContactWriter.writeCard(ContactWriter.kt:59)
	at at.bitfire.vcard4android.Contact.writeVCard(Contact.kt:19)
	at at.bitfire.davdroid.syncadapter.ContactsSyncManager$generateUpload$1.invoke(ContactsSyncManager.kt:11)
	at at.bitfire.davdroid.syncadapter.ContactsSyncManager$generateUpload$1.invoke(ContactsSyncManager.kt:1)
	at at.bitfire.davdroid.syncadapter.SyncManager.localExceptionContext(SyncManager.kt:8)
	at at.bitfire.davdroid.syncadapter.ContactsSyncManager.generateUpload(ContactsSyncManager.kt:2)
	at at.bitfire.davdroid.syncadapter.ContactsSyncManager.generateUpload(ContactsSyncManager.kt:1)
	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$2.invoke(SyncManager.kt:3)
	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$2.invoke(SyncManager.kt:1)
	at at.bitfire.davdroid.syncadapter.SyncManager.remoteExceptionContext(SyncManager.kt:1)
	at at.bitfire.davdroid.syncadapter.SyncManager.uploadDirty(SyncManager.kt:12)
	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$1$1$1.invoke(SyncManager.kt:2)
	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$1$1$1.invoke(SyncManager.kt:1)
	at at.bitfire.davdroid.syncadapter.SyncManager.localExceptionContext(SyncManager.kt:8)
	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$1$1.invokeSuspend(SyncManager.kt:21)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:9)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:111)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:143)
	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source:105)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source:3)
	at at.bitfire.davdroid.syncadapter.SyncManager.uploadDirty(SyncManager.kt:2)
	at at.bitfire.davdroid.syncadapter.ContactsSyncManager.uploadDirty(ContactsSyncManager.kt:113)
	at at.bitfire.davdroid.syncadapter.SyncManager$performSync$1.invoke(SyncManager.kt:10)
	at at.bitfire.davdroid.syncadapter.SyncManager$performSync$1.invoke(SyncManager.kt:1)
	at at.bitfire.davdroid.syncadapter.SyncManager.unwrapExceptions(SyncManager.kt:2)
	at at.bitfire.davdroid.syncadapter.SyncManager.performSync(SyncManager.kt:20)
	at at.bitfire.davdroid.syncadapter.ContactSyncer.sync(ContactSyncer.kt:221)
	at at.bitfire.davdroid.syncadapter.Syncer.onPerformSync(Syncer.kt:122)
	at at.bitfire.davdroid.syncadapter.SyncWorker$doWork$2$1$1.invoke(SyncWorker.kt:3)
	at at.bitfire.davdroid.syncadapter.SyncWorker$doWork$2$1$1.invoke(SyncWorker.kt:1)
	at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:59)
	at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Interruptible.kt:13)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:5)
	at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:41)
	at kotlinx.coroutines.InterruptibleKt.runInterruptible$default(Interruptible.kt:9)
	at at.bitfire.davdroid.syncadapter.SyncWorker$doWork$2.invokeSuspend(SyncWorker.kt:502)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:9)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:111)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
	at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.NoSuchFieldError: No field emptyString of type Ljava/lang/String; in class Ljavax/xml/namespace/QName; or its superclasses (declaration of 'javax.xml.namespace.QName' appears in /apex/com.android.art/javalib/core-libart.jar)
	at ezvcard.io.scribe.VCardPropertyScribe.<init>(VCardPropertyScribe.java:3)
	at ezvcard.io.scribe.AddressScribe.<init>(AddressScribe.java:5)
	at ezvcard.io.scribe.ScribeIndex.<clinit>(ScribeIndex.java:24)
	at ezvcard.io.StreamWriter.<init>(StreamWriter.java:4)
	at ezvcard.io.text.VCardWriter.<init>(VCardWriter.java:1)
	at at.bitfire.vcard4android.ContactWriter.writeCard(ContactWriter.kt:59)
	at at.bitfire.vcard4android.Contact.writeVCard(Contact.kt:19)
	at at.bitfire.davdroid.syncadapter.ContactsSyncManager$generateUpload$1.invoke(ContactsSyncManager.kt:11)
	at at.bitfire.davdroid.syncadapter.ContactsSyncManager$generateUpload$1.invoke(ContactsSyncManager.kt:1)
	at at.bitfire.davdroid.syncadapter.SyncManager.localExceptionContext(SyncManager.kt:8)
	at at.bitfire.davdroid.syncadapter.ContactsSyncManager.generateUpload(ContactsSyncManager.kt:2)
	at at.bitfire.davdroid.syncadapter.ContactsSyncManager.generateUpload(ContactsSyncManager.kt:1)
	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$3.invoke(SyncManager.kt:5)
	at at.bitfire.davdroid.syncadapter.SyncManager$uploadDirty$3.invoke(SyncManager.kt:1)
	at at.bitfire.davdroid.syncadapter.SyncManager.remoteExceptionContext(SyncManager.kt:1)
	at at.bitfire.davdroid.syncadapter.SyncManager.uploadDirty(SyncManager.kt:15)
	... 30 more

ez-vcard now requires Java 8. This might have something to do with your problem. This has been known to cause issues with some Android projects.

There is a parallel branch which supports Java 6:

https://github.com/mangstadt/ez-vcard/tree/j6