我正在尝试运行基于 LibGDX 的 Android 应用程序,该应用程序是使用 Spring 框架(不是 Android 的 Spring,而是普通的 Spring)构建的。有一个异常(exception):
ClassNotFoundException: Didn't find class "java.beans.Introspector"
据我所知,Android 运行时不像常规 JRE 那样具有功能齐全的 java.beans 包。
这个问题有解决方法吗(可能是一些缺少类的 3d-party jar)?
我无法更改包名称,因为使用此 Introspector 的 AnnotationBeanNameGenerator 类是 Spring-Context 的一部分。
最佳答案
最终看来,普通的 Spring(不是 Spring for Android)无法在 Android 上运行,因为它使用了 CGLIB。 CGLIB只能操作Java字节码,但在Android上有一个特殊的Dalvik字节码。
缺少 java.beans
类的问题可以通过手动添加此类类(您可以使用一些开源 JRE 实现,如 Apache Harmony )并将 --core-library
选项传递给 dex 来解决。
如何传递--core-library
选项:
将以下内容放入 Gradle Android 插件配置的 android
部分:
dexOptions {
preDexLibraries = false
}
并添加新参数:
tasks.withType(com.android.build.gradle.tasks.Dex) {
additionalParameters=['--core-library']
}
关于java - Spring LibGDX Android 应用程序中缺少 java.beans.Introspector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30012940/