java.lang.ClassNotFoundException: Не нашел класс «com.my.app.example.Main» по пути: DexPathList

У меня с трудом возникает то, что вызывает эту ошибку в adb, потому что я использую Kotlin , TornadoFX ( библиотека JavaFX Kotlin ) и Gluon с JFXMobile . Когда я использую установку androidInstall от androidInstall для создания моего проекта, я сталкиваюсь с этой ошибкой, а также с черным экраном:

java.lang.ClassNotFoundException: Didn't find class "com.my.app.example.Main" on path: DexPathList

Я пытаюсь использовать JavaFX 3D в этом приложении, но я не думаю, что это вызывает ошибку.

Я проверил свой манифест Android, и имя пакета совпадает с моим проектом.

Моя иерархия проектов выглядит так:

 root libs src android ios main kotlin com.my.app.example Main.kt 

Что может заставить Android не найти файл? Поскольку нет папки Java.

У меня есть все следующие в моем файле gradle, скомпилированные успешно:

 apply plugin: 'kotlin' apply plugin: 'idea' apply plugin: 'java' apply plugin: 'javafx-gradle-plugin' apply plugin: 'org.javafxports.jfxmobile' apply plugin: 'org.jetbrains.kotlin.android.extensions' dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile 'no.tornado:tornadofx:1.7.12' compile 'no.tornado:tornadofx-android-compat:1.0.1' compile 'com.gluonhq:charm:4.3.7' compile fileTree(dir: 'libs', include: '*.jar') } 

fileTree(dir: 'libs', include: '*.jar') – для внешней библиотеки, которую я использую для импорта ObjModels для JavaFX, находящегося в папке libs моего проекта.

Вещи, которые я с подозрением отношусь к этой ошибке:

  1. У меня нет правильных вещей в моем файле Gradle, потому что я ужасен с Gradle.
  2. .jar в моей папке libs не включается правильно в Android apk и беспорядок все это как-то
  3. Иерархия файлов Kotlin каким-то образом делает Android неспособным найти Основной класс, или тот факт, что это Main.kt вместо Main.java

Обратите внимание, что этот проект отлично работает на моем рабочем столе, поэтому это не проблема с моим исходным кодом, просто что-то на конце Android.

Любые идеи, что вызывает это? Спасибо за любую помощь!

Solutions Collecting From Web of "java.lang.ClassNotFoundException: Не нашел класс «com.my.app.example.Main» по пути: DexPathList"

Это очень простой пример проекта Gluon Mobile, работающего с Kotlin, который можно развернуть на Android / iOS.

Используя плагин Gluon для IntelliJ, создал проект (Single View) и изменил файл build.gradle:

build.gradle

 buildscript { ext.kotlin_version = '1.1.51' repositories { mavenCentral() jcenter() } dependencies { classpath 'org.javafxports:jfxmobile-plugin:1.3.9' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'kotlin' apply plugin: 'idea' apply plugin: 'java' apply plugin: 'org.javafxports.jfxmobile' apply plugin: 'org.jetbrains.kotlin.android.extensions' repositories { jcenter() mavenCentral() maven { url 'http://nexus.gluonhq.com/nexus/content/repositories/releases' } } mainClassName = 'com.gluon.kotlin.Main' dependencies { compile 'com.gluonhq:charm:4.4.1' compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" compile 'no.tornado:tornadofx:1.7.12' compile 'no.tornado:tornadofx-android-compat:1.0.1' } jfxmobile { downConfig { version = '3.6.0' plugins 'display', 'lifecycle', 'statusbar', 'storage' } android { manifest = 'src/android/AndroidManifest.xml' } ios { infoPList = file('src/ios/Default-Info.plist') forceLinkClasses = [ 'com.gluonhq.**.*', 'javax.annotations.**.*', 'javax.inject.**.*', 'javax.json.**.*', 'org.glassfish.json.**.*' ] } } 

Удалите пакет /src/main/java и добавьте /src/main/kotlin .

Класс Main.kt находится в /src/main/kotlin/com/gluon/kotlin/Main.kt :

Main.kt

 package com.gluon.kotlin import com.gluonhq.charm.glisten.application.MobileApplication import com.gluonhq.charm.glisten.mvc.View import com.gluonhq.charm.glisten.visual.MaterialDesignIcon import javafx.geometry.Pos import javafx.scene.control.Button import javafx.scene.control.Label import javafx.scene.layout.VBox import tornadofx.plusAssign class Main: MobileApplication() { override fun init() { addViewFactory(MobileApplication.HOME_VIEW, { val view = View("home") val vBox = VBox() with (vBox) { alignment = Pos.CENTER spacing = 30.0 this += Button("Kotlin", MaterialDesignIcon.CODE.graphic()).apply { println("Click") } this += Label("Gluon Mobile - Kotlin") } with(view) { this.center = vBox this.setOnShown { with(MobileApplication.getInstance().appBar) { this.navIcon = MaterialDesignIcon.MENU.button().apply { println("Click") } this.titleText = "Gluon Mobile - Kotlin" } } } view }) } } 

Вы можете запустить проект на рабочем столе и без изменения файла AndroidManifest, развернуть на Android-устройство, используя задачу androidInstall .