java.lang.NoClassDefFoundError:javafxports.android.FXDalvikEntity$2

java.lang.NoClassDefFoundError:javafxports.android.FXDalvikEntity$2,java,android,javafxports,Java,Android,Javafxports,在Android手机上启动应用程序时出现以下错误 FATAL EXCEPTION: main Process: ie.murphysoftware.games.magnatron, PID: 17378 java.lang.NoClassDefFoundError: javafxports.android.FXDalvikEntity$2 at javafxports.android.FXDalvikEntity.jfxEventsLoop(FXDalvikEntity.java:484

在Android手机上启动应用程序时出现以下错误

FATAL EXCEPTION: main
Process: ie.murphysoftware.games.magnatron, PID: 17378
java.lang.NoClassDefFoundError: javafxports.android.FXDalvikEntity$2
    at javafxports.android.FXDalvikEntity.jfxEventsLoop(FXDalvikEntity.java:484)
    at javafxports.android.FXDalvikEntity.<init>(FXDalvikEntity.java:118)
    at javafxports.android.FXActivity.onCreate(FXActivity.java:140)
    at android.app.Activity.performCreate(Activity.java:5426)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
    at android.app.ActivityThread.access$900(ActivityThread.java:161)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:157)
    at android.app.ActivityThread.main(ActivityThread.java:5356)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
    at dalvik.system.NativeStart.main(Native Method)

这是您收到的异常指示:

如果Java虚拟机或ClassLoader实例尝试加载类的定义(作为普通方法调用的一部分或使用新表达式创建新实例的一部分),但找不到该类的定义,则引发

(来源:)


这意味着,运行时环境中不存在在应用程序中(直接或间接)访问的类。因此,您可能需要选择更新的版本作为运行时环境。另一个原因可能是您使用的依赖项不存在(我不确定Android应用程序如何处理第三方依赖项),您需要将它们包括到您的应用程序中。

这是您收到的异常情况所表明的:

如果Java虚拟机或ClassLoader实例尝试加载类的定义(作为普通方法调用的一部分或使用新表达式创建新实例的一部分),但找不到该类的定义,则引发

(来源:)


这意味着,运行时环境中不存在在应用程序中(直接或间接)访问的类。因此,您可能需要选择更新的版本作为运行时环境。另一个原因可能是您使用的依赖项不存在(我不确定Android应用程序如何处理第三方依赖项),您需要将它们包括到您的应用程序中。

目前还没有解决方案,但问题的原因是

  • 应用程序的大小需要2个dex文件
  • Android SDK版本20或更低版本自然不支持multidex文件,需要额外的Android库“multidex.jar”。实现multidex库需要额外的代码,这些代码将在本链接中详细记录
  • 这些详细的说明不考虑JavaFXPosits层次结构,需要实现Muldix功能>代码>的类扩展了Android .Suff.MuldiDX .MultudioPosie或重写<代码>应用程序。
    因此,现在的解决方案似乎是找到一种方法,让
    javafx.application.application
    调用
    Multidex.install(这个)导致stackoverflow上的新问题尚未找到解决方案,但问题的原因是

  • 应用程序的大小需要2个dex文件
  • Android SDK版本20或更低版本自然不支持multidex文件,需要额外的Android库“multidex.jar”。实现multidex库需要额外的代码,这些代码将在本链接中详细记录
  • 这些详细的说明不考虑JavaFXPosits层次结构,需要实现Muldix功能>代码>的类扩展了Android .Suff.MuldiDX .MultudioPosie或重写<代码>应用程序。
    因此,现在的解决方案似乎是找到一种方法,让
    javafx.application.application
    调用
    Multidex.install(这个)
    导致stackoverflow上的新问题

    是否有
    multiDexEnabled=true
    ?是,并且应用程序apk有多个dex文件。我上面描述的问题是获取应用程序加载的第二个dex文件类。你能用Android API>=21复制这个问题吗?@ItachiUchiha-不,我只能在API 19上导致这个问题,它在API>=21上工作。我认为它将在API 19或更低版本上失败。您可以在JavaFXPorts存储库中进行同样的操作吗?您是否有
    multiDexEnabled=true
    ?是的,并且应用程序apk有多个dex文件。我上面描述的问题是获取应用程序加载的第二个dex文件类。你能用Android API>=21复制这个问题吗?@ItachiUchiha-不,我只能在API 19上导致这个问题,它在API>=21上工作。我认为它会在API 19或更少的版本上失败。你能在JavaFXPorts存储库中获得同样的结果吗?这个问题与Android dex类加载相关,虽然你给出的答案在与java类加载相关时是正确的,但它没有解决我问的问题。我明白了。我深入研究了“多个dex文件”问题,这似乎是您使用的API版本的问题。在API版本21之前,只能使用1个DEX文件(除非对多个DEX文件使用额外的依赖项)。从API21开始,您可以拥有多个DEX文件(我在您的评论中看到您已经验证了这一点)。这个问题与Android-dex类加载相关,虽然您给出的答案在与java类加载相关时是正确的,但它没有解决我提出的问题。我深入研究了“多个dex文件”问题,这似乎是您使用的API版本的问题。在API版本21之前,只能使用1个DEX文件(除非对多个DEX文件使用额外的依赖项)。从API21开始,您可以拥有多个DEX文件(我在您的评论中看到您已经验证了这一点)。我不知道您的清单和gradle构建,但在JavaFXMobile中,multidex是按默认值-AFAIK-激活的。因此,您需要将(完全限定的!)multidex应用程序名称设置为清单
    。我不知道您的清单和gradle构建,但在JavaFXMobile中,multidex是默认激活的。因此,您需要将(完全限定!)多索引应用程序名称设置为清单
    Eclipse - Neon
    Gradle 3.1
    compileSdkVersion = 25
    minSdkVersion = 17
    buildToolsVersion = "25.0.0"
    applicationPackage = 'org.javafxports.ensemble'