dengxuelong 2024-12-09 16:16 采纳率: 50%
浏览 14

关于#android#的问题:在UE里使用.aar文件里的java方法,运行到使用该Java方法的时候就崩

在UE里使用.aar文件里的java方法,打包安卓应用出来后,运行到使用该Java方法的时候就崩,这个该怎么解决,错误如下

2024-12-09 15:52:56.380 15050-15662/com.YourCompany.BLE5_1 A/rCompany.BLE5_1: java_vm_ext.cc:591] JNI DETECTED ERROR IN APPLICATION: JNI FindClass called with pending exception java.lang.ClassNotFoundException: Didn't find class "com.example.TestFunc.TestFunc_A" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/system/lib64, /system_ext/lib64, /system/lib64, /system_ext/lib64]]
    java_vm_ext.cc:591]   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:259)
    java_vm_ext.cc:591]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
    java_vm_ext.cc:591]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
    java_vm_ext.cc:591] 
    java_vm_ext.cc:591]     in call to FindClass

  • 写回答

1条回答 默认 最新

  • 越重天 新星创作者: Java技术领域 2024-12-13 13:19
    关注

    本答案参考多次询问ChatGPT-3.5后选择的最佳回答,若是满意,还请采纳,谢谢。

    以下是一些可能的解决方法:

    一、类路径问题

    1. 检查.aar文件包含关系

      • 确保在UE项目中正确地将包含该Java类的.aar文件添加到构建路径中。在UE中,可能需要检查项目设置里与安卓构建相关的部分,确认.aar文件被正确地包含在最终的APK构建中。
      • 例如,如果使用Gradle构建系统(UE可能在安卓构建部分使用类似机制),要确保在build.gradle(如果有对应的构建脚本)中,.aar文件被正确地添加为依赖项。如果是手动添加依赖,可能存在路径错误或者遗漏了某些必要的配置步骤。
    2. Dex路径问题

      • 从错误信息来看,类没有在Dex路径中找到。可能需要检查UE的安卓打包流程是否正确地处理了.aar文件中的类到Dex文件的转换。

      • 有时候,UE可能有自己的一套资源和类处理机制。如果UE在打包时没有将.aar中的类正确地合并到Dex文件中,就会出现这种找不到类的情况。可以尝试在UE中查找与Dex处理相关的设置或者插件,看是否能够调整。

      • 例如,某些游戏引擎在打包安卓应用时,会有一个资源和类的预处理器,如果这个预处理器的配置不正确,可能会导致类没有被正确地处理。

    二、类名和包名问题

    1. 包名一致性
      • 确认在UE项目中调用Java方法时使用的包名和类名与.aar文件中的实际情况完全一致。
      • 例如,如果在.aar文件中类的全限定名是com.example.TestFunc.TestFunc_A,那么在UE中调用时也必须准确地使用这个包名和类名,包括大小写等细节。如果存在任何拼写错误或者不一致,就会导致ClassNotFoundException
    2. 类的可见性
      • 检查.aar文件中的Java类是否被正确地设置为可被外部访问。如果类被标记为内部使用或者有访问限制,在UE中可能无法正确地调用。
      • 例如,在Java中,如果一个类被声明为private或者在一个内部包中并且没有合适的访问权限设置,UE中的调用就会失败。可以查看.aar文件的源代码或者相关文档,确认类的访问权限是否符合要求。

    三、版本兼容性问题

    1. Java版本兼容性
      • 确保UE的安卓构建环境所使用的Java版本与.aar文件所兼容的Java版本一致。如果.aar文件是基于较新的Java版本编译的,而UE的安卓构建环境使用的是较旧的Java版本,可能会出现类加载等问题。
      • 例如,如果.aar文件是基于Java 11编译的,而UE的安卓构建默认使用Java 8,可能会导致一些新的Java特性无法被正确识别,从而影响类的加载和方法调用。
    2. UE版本与.aar兼容性
      • 检查UE版本与.aar文件是否兼容。有时候,UE的更新可能会改变其与外部库(如.aar文件)交互的方式。
      • 例如,如果UE从一个版本升级到另一个版本,它对安卓构建的内部机制可能发生了变化,可能会影响到对.aar文件中Java方法的调用。可以查看UE的版本更新日志,看是否有与安卓开发或者外部库交互相关的变更。
    评论

报告相同问题?

问题事件

  • 创建了问题 12月9日