PayMaya / PayMaya-Android-SDK-v2

MIT License
12 stars 6 forks source link

[Java] NoClassDefFoundError when building PayMayaCheckout #8

Closed jcchikikomori closed 4 years ago

jcchikikomori commented 4 years ago

Implementation:

// build contact
Contact pmContact = new Contact(ci.contactNumber(), ci.emailAddress());
// build buyer
Buyer pmBuyer = new Buyer(
  ci.firstname(),
  null,
  ci.lastname(),
  pmContact,
  null, null, null
);
// Prepare params for PayMayaCheckout
String successURL = BuildConfig.CASHLESS_REDIRECT_URL_SUCCESS;
String failedURL = BuildConfig.CASHLESS_REDIRECT_URL_FAILED;
String canceledURL = BuildConfig.CASHLESS_REDIRECT_URL_CANCELED;
// Compile to a class
RedirectUrl redirectUrl = new RedirectUrl(successURL, failedURL, canceledURL);
// Prepare Checkout instance with final details
CheckoutRequest checkout = new CheckoutRequest(
  finalTotalAmount, pmBuyer,
  productList, referenceNumber, redirectUrl, null);
// Prepare PayMayaCheckout singleton
mPayMayaCheckout = PayMayaCheckout.Companion.newBuilder()
  .clientPublicKey(midPublicKey)
  .environment(PayMayaEnvironment.PRODUCTION)
  .logLevel(BuildConfig.DEBUG)
  .build();

Error:

java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/serialization/json/Json;
        at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
        at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:126)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:198)
        at android.app.ActivityThread.main(ActivityThread.java:6732)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/serialization/json/Json;
        at com.paymaya.sdk.android.common.internal.di.CommonModule.getJson(CommonModule.kt:34)
        at com.paymaya.sdk.android.common.internal.di.CommonModule.getCheckStatusUseCase(CommonModule.kt:50)
        at com.paymaya.sdk.android.checkout.internal.PayMayaCheckoutImpl.<init>(PayMayaCheckoutImpl.kt:44)
        at com.paymaya.sdk.android.checkout.internal.PayMayaCheckoutImpl$BuilderImpl.build(PayMayaCheckoutImpl.kt:117)
        at ph.REDACTED.REDACTED.ui.checkout.CheckoutPresenter.executePaymaya(CheckoutPresenter.java:455)
        at ph.REDACTED.REDACTED.ui.checkout.CheckoutPresenter.preparePlaceOrderCashless(CheckoutPresenter.java:286)
        at ph.REDACTED.REDACTED.ui.checkout.CheckoutPresenter.access$500(CheckoutPresenter.java:62)
        at ph.REDACTED.REDACTED.ui.checkout.CheckoutPresenter$2.onNext(CheckoutPresenter.java:545)
        at ph.REDACTED.REDACTED.ui.checkout.CheckoutPresenter$2.onNext(CheckoutPresenter.java:523)
        at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:201)
        at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:255)
        at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
        at android.os.Handler.handleCallback(Handler.java:873) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:198) 
        at android.app.ActivityThread.main(ActivityThread.java:6732) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
     Caused by: java.lang.ClassNotFoundException: Didn't find class "kotlinx.serialization.json.Json" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/ph.REDACTED.REDACTED.staging.debug-9gRKU1v50fuLHzuu_FJkPA==/base.apk"],nativeLibraryDirectories=[/data/app/ph.REDACTED.REDACTED.staging.debug-9gRKU1v50fuLHzuu_FJkPA==/lib/arm64, /data/app/ph.REDACTED.REDACTED.staging.debug-9gRKU1v50fuLHzuu_FJkPA==/base.apk!/lib/arm64-v8a, /system/lib64]]
...
jcchikikomori commented 4 years ago

You guys should provide a full documentation for existing Java projects who uses your platform. I will make a PR for this