java.lang.ClassNotFoundException:未在路径中找到类“com.my.app.example.Main”:DexPathList

我很难在adb上导致这个错误,因为我正在使用KotlinTornadoFX一个JavaFX Kotlin库 )和GluonJFXMobile 。 当我使用胶子的androidInstall来建立我的项目,我遇到了这个错误,以及一个黑屏:

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

我试图在这个应用程序中使用JavaFX 3D,但我不认为这是导致错误。

我检查了我的Android Manifest,包名与我的项目相同。

我的项目层次结构如下所示:

 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 for JavaFX,位于我的项目的libs文件夹中。

我怀疑造成这个错误的事情:

  1. 我的Gradle文件中没有正确的东西,因为我对Gradle很糟糕。
  2. 我的libs文件夹中的.jar文件没有被正确地包含在Android apk中,并以某种方式搞砸了它
  3. Kotlin文件层次结构让Android无法找到Main类,或者是Main.ct而不是Main.java

请注意 ,这个项目在我的桌面上运行良好,所以这不是我的源代码的问题,只是在Android特定的一端。

任何想法是什么造成这个? 感谢您的帮助!

这是一个非常简单的使用Kotlin的Gluon Mobile项目示例,可以部署到Android / iOS。

使用IntelliJ的Gluon插件,创建一个项目(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文件,使用androidInstall任务将其部署到Android设备。