如何在Android项目中使用JavaFX活动? (Kokos样本项目)

如何在Android项目中使用JavaFX活动? (Kokos样本项目),第1张

概述我正在尝试运行javafxports示例项目Kokos,因为我想在AndroidStudio内置的应用程序中使用JavaFX组件,但无法正确构建它,我可以构建所有其他示例但这种混合方法不起作用.当我构建我只是得到一个黑屏和错误“java.lang.ClassNotFoundException:没有找到类”org.javafxports.kokos.Mai

我正在尝试运行javafxports示例项目Kokos,因为我想在Android Studio内置的应用程序中使用JavaFX组件,但无法正确构建它,我可以构建所有其他示例但这种混合方法不起作用.

当我构建我只是得到一个黑屏和错误“java.lang.classNotFoundException:没有找到类”org.javafxports.kokos.Main“在路径上:DexPathList [[zip file”/data/app/org.javafxports .kokos-2 / base.apk “]”

据我所知,没有任何kokos类实际上内置到apk中,因此它无法找到它们,但我无法弄清楚为什么,这是我能找到的这种方法的唯一样本.

是否有人能够成功构建和运行Kokos样本,如果是,是否需要进行任何修改?

或者,是否有另一个在这样的AndroID项目中使用JavaFX组件的例子,我可以将其用作基础?我只是希望能够拥有一个由原生AndroID活动组成的应用程序,但能够启动JavaFX活动.

给出的错误消息是:

02-01 21:43:16.406 17575-17575/org.javafxports.kokos V/DalvikLauncher: Launch JavaFX application on DALVIK vm.02-01 21:43:16.409 17575-17575/org.javafxports.kokos V/DalvikLauncher: We have JavaFX on our current (base) classpath, registered exit Listener02-01 21:43:16.410 17575-17575/org.javafxports.kokos E/DalvikLauncher: Launch Failed with exception.                                                                       java.lang.classNotFoundException: DIDn't find class "org.javafxports.kokos.Main" on path: DexPathList[[zip file "/data/app/org.javafxports.kokos-1/base.apk"],nativelibraryDirectorIEs=[/data/app/org.javafxports.kokos-1/lib/arm, /data/app/org.javafxports.kokos-1/base.apk!/lib/armeabi, /vendor/lib, /system/lib]]                                                                           at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)                                                                           at java.lang.classLoader.loadClass(ClassLoader.java:511)                                                                           at java.lang.classLoader.loadClass(ClassLoader.java:469)                                                                           at javafxports.androID.DalvikLauncher.resolveApplicationClass(DalvikLauncher.java:262)                                                                           at javafxports.androID.DalvikLauncher.launchApp(DalvikLauncher.java:164)                                                                           at javafxports.androID.FXDalvikEntity.getLauncherAndLaunchApplication(FXDalvikEntity.java:162)                                                                           at javafxports.androID.FXDalvikEntity.surfaceCreated(FXDalvikEntity.java:304)                                                                           at androID.vIEw.SurfaceVIEw.updateWindow(SurfaceVIEw.java:583)                                                                           at androID.vIEw.SurfaceVIEw.onPreDraw(SurfaceVIEw.java:177)                                                                           at androID.vIEw.VIEwTreeObserver.dispatchOnPreDraw(VIEwTreeObserver.java:944)                                                                           at androID.vIEw.VIEwRootImpl.performTraversals(VIEwRootImpl.java:2063)                                                                           at androID.vIEw.VIEwRootImpl.doTraversal(VIEwRootImpl.java:1115)                                                                           at androID.vIEw.VIEwRootImpl$TraversalRunnable.run(VIEwRootImpl.java:6023)                                                                           at androID.vIEw.Choreographer$CallbackRecord.run(Choreographer.java:858)                                                                           at androID.vIEw.Choreographer.doCallbacks(Choreographer.java:670)                                                                           at androID.vIEw.Choreographer.doFrame(Choreographer.java:606)                                                                           at androID.vIEw.Choreographer$FramedisplayEventReceiver.run(Choreographer.java:844)                                                                           at androID.os.Handler.handleCallback(Handler.java:739)                                                                           at androID.os.Handler.dispatchMessage(Handler.java:95)                                                                           at androID.os.Looper.loop(Looper.java:148)                                                                           at androID.app.ActivityThread.main(ActivityThread.java:5461)                                                                           at java.lang.reflect.Method.invoke(Native Method)                                                                           at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)                                                                           at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:616)                                                                           at de.robv.androID.xposed.XposedBrIDge.main(XposedBrIDge.java:102)                                                                        Suppressed: java.lang.classNotFoundException: DIDn't find class "org.javafxports.kokos.Main" on path: DexPathList[[dex file "/data/dalvik-cache/xposed_XResourcesSuperClass.dex"],nativelibraryDirectorIEs=[/vendor/lib, /system/lib]]                                                                           at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)                                                                           at java.lang.classLoader.loadClass(ClassLoader.java:511)                                                                           at java.lang.classLoader.loadClass(ClassLoader.java:504)                                                                                ... 23 more                                                                            Suppressed: java.lang.classNotFoundException: org.javafxports.kokos.Main                                                                           at java.lang.class.classForname(Native Method)                                                                           at java.lang.BootClassLoader.findClass(ClassLoader.java:781)                                                                           at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)                                                                           at java.lang.classLoader.loadClass(ClassLoader.java:504)                                                                                    ... 24 more                                                                        Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available02-01 21:43:16.411 17575-17575/org.javafxports.kokos V/FXEntity: Called Surface changed [1080, 1848], format 402-01 21:43:16.411 17575-17575/org.javafxports.kokos V/FXActivity native: [JVDBG] SURFACE created native androID window at 0xa47cd508, surface = 0xff9d0f6002-01 21:43:16.412 17575-17575/org.javafxports.kokos V/FXEntity: Called Surface redraw needed02-01 21:43:16.423 17575-17575/org.javafxports.kokos V/FXEntity: Called Surface redraw needed02-01 21:43:16.441 1378-1536/system_process I/ActivityManager: displayed org.javafxports.kokos/javafxports.androID.FXActivity: +330ms

这是我的app / build.gradle文件,我试图更新依赖项但仍有问题,有什么明显的错误吗?

我原来的app / build.gradle文件:

buildscript {    repositorIEs {        jcenter()    }       dependencIEs {        classpath 'me.tatarka:gradle-retrolambda:3.5.0'        classpath 'com.androID.tools.build:gradle:2.2.3'    }}repositorIEs {     jcenter()}apply plugin: 'com.androID.application'androID {    compileSdkVersion 23    // minSdkVersion 16    buildToolsversion "23.0.2"    dexOptions {        preDexlibrarIEs = false    }    defaultConfig {        applicationID "lodgon.org.kokos"        minSdkVersion 16        targetSdkVersion 16        versionCode 1        versionname "1.0"        multIDexEnabled true    }    sourceSets {        main {            jnilibs.srcDir file("/opt/dalvik-sdk/rt/lib")            assets.srcDirs = ['assets']        }    }    buildTypes {        release {            MinifyEnabled false            proguardfiles getDefaultProguardfile('proguard-androID.txt'), 'proguard-rules.pro'        }    }    productFlavors {    }}dependencIEs {    compile filetree(include: ['*.jar'], dir: 'libs')    compile filetree(include: ['*.jar'], dir: '/opt/dalvik-sdk/rt/lib/ext')}project.tasks.withType(com.androID.build.gradle.tasks.Dex) {    additionalParameters=['--core-library']}

我编辑的app / build.gradle

我应用了一些建议的修复程序,并更改了applicationID和dalvik-sdk位置,但我仍然遇到同样的问题,文件现在看起来像这样:

buildscript {    repositorIEs {        jcenter()    }       dependencIEs {        classpath 'me.tatarka:gradle-retrolambda:3.5.0'        classpath 'com.androID.tools.build:gradle:2.2.3'    }}repositorIEs {     jcenter()}apply plugin: 'com.androID.application'androID {    compileSdkVersion 23    // minSdkVersion 16    buildToolsversion "23.0.2"    dexOptions {        preDexlibrarIEs = false    }    defaultConfig {        applicationID "javafxports.org.kokos"        minSdkVersion 16        targetSdkVersion 16        versionCode 1        versionname "1.0"        multIDexEnabled true    }    sourceSets {        main {            jnilibs.srcDir file("C:\Users\AdamL\.gradle\caches\modules-2\files-2.1\org.javafxports\dalvik-sdk\8.60.8\6630ec66e4703c910ac3fd6151a8494c8b59186b\unpacked\dalvik-sdk\rt\lib")            assets.srcDirs = ['assets']        }    }    buildTypes {        release {            MinifyEnabled false            proguardfiles getDefaultProguardfile('proguard-androID.txt'), 'proguard-rules.pro'        }    }    productFlavors {    }}dependencIEs {    compile filetree(include: ['*.jar'], dir: 'libs')    compile filetree(include: ['*.jar'], dir: 'C:\Users\AdamL\.gradle\caches\modules-2\files-2.1\org.javafxports\dalvik-sdk\8.60.8\6630ec66e4703c910ac3fd6151a8494c8b59186b\unpacked\dalvik-sdk\rt\lib\ext')}project.tasks.withType(com.androID.build.gradle.tasks.Dex) {    additionalParameters=['--core-library']}

AndroID清单

<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"    package="javafxports.org.kokos" >    <application        androID:allowBackup="true"        androID:icon="@drawable/ic_launcher"        androID:label="@string/app_name"        androID:theme="@style/Apptheme" >        <activity            androID:name="javafxports.org.kokos.MainActivity"            androID:label="@string/app_name" >            <intent-filter>                <action androID:name="androID.intent.action.MAIN" />                <category androID:name="androID.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

这些是我从下载的示例项目中所做的更改

> JavaFXPorts插件已更改为版本1.32
>将androID-gradle插件引用更改为2.2.3版
>将retrolamba版本更改为3.5.0
>更改了applicationID以更正一个
>更改了dalvik-sdk位置以更正其中一个

构建正在从包含示例项目运行,如:gradlew:Kokos:androIDInstall

解决方法:

build.gradle文件有几个问题.

应用程序ID错误,您应该使用包名:

defaultConfig {    applicationID "javafxports.org.kokos"    ...}  

dalvik-sdk路径不正确.你拥有的那个(/ opt / dalvik-sdk)是基于linux的.

如果您已经尝试过其他JavaFXPorts samples,那么您已经下载了最新版本的dalvik-sdk,它将安装在.gradle存储库中.

你会发现它:

C:\Users\<user>\.gradle\caches\modules-2\files-2.1\org.javafxports\dalvik-sdk.60.8\<ID>\unpacked\dalvik-sdk

找到正确的路径并在sourceSets(jnilibs.srcDir)和依赖项中替换它.

总结

以上是内存溢出为你收集整理的如何在Android项目中使用JavaFX活动? (Kokos样本项目)全部内容,希望文章能够帮你解决如何在Android项目中使用JavaFX活动? (Kokos样本项目)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1099416.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存