Используйте Java JAR в проекте Android Kotlin - PullRequest
0 голосов
/ 30 октября 2019

У меня есть библиотека, которая представляет собой набор файлов * .so и один файл * .jar. Чтобы использовать библиотеку, я взаимодействую с классами из этого JAR. Когда я создаю новый проект Android Java и добавляю всю библиотеку, он работает. Когда я создаю новый проект Android Kotlin любым методом, который я вызываю, я получаю ClassNotFoundException.

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.common.sdk.printer.UsbPrinterManager" on path: DexPathList[[zip file "/data/app/com.payeye.poc-1/base.apk"],nativeLibraryDirectories=[/data/app/com.payeye.poc-1/lib/arm, /vendor/lib, /system/lib]]

Я пытался создать класс Java внутри моего проекта Kotlin для взаимодействия с библиотекой через этот класс, но это тоже не сработало. Я создал отдельный модуль и указал целевой язык как Java, добавил библиотеку в модуль и затем вызвал библиотеку, но все равно то же исключение.

Когда я заглядываю внутрь JAR и проверяю метод, который выдает это исключение, я вижу, что он находит классы по строковому имени:

 public synchronized void start(int mode) throws TelpoException {
    Class<?> thermalPrinter = null;
    Method method = null;
    Object obj = null;
    if (SystemUtil.getDeviceType() != DeviceModelEnum.TPS900.ordinal() && SystemUtil.getDeviceType() != DeviceModelEnum.TPS390P.ordinal() && SystemUtil.getDeviceType() != DeviceModelEnum.TPS900MB.ordinal()) {
        try {
            thermalPrinter = Class.forName("com.common.sdk.printer.UsbPrinterManager");
        } catch (ClassNotFoundException var10) {
            var10.printStackTrace();
            throw new InternalErrorException();
        }

        obj = this.mContext.getSystemService("UsbPrinter");

        try {
            method = thermalPrinter.getMethod("start", Integer.TYPE);
        } catch (NoSuchMethodException var9) {
            var9.printStackTrace();
            throw new InternalErrorException();
        }

Поскольку Java и Kotlin должны прекрасно работать вместе, я не надеваюне понимаю, откуда возникла ошибка. Могу ли я что-нибудь настроить, чтобы эта библиотека работала в моем проекте Kotlin?

...