java - Spring LibGDX And​​roid 应用程序中缺少 java.beans.Introspector

标签 java android spring libgdx

我正在尝试运行基于 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 And​​roid 应用程序中缺少 java.beans.Introspector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30012940/

相关文章:

Android 作为 httppost 的结果获取 pdf 文件

android - 在屏幕中央对齐控件

android - 适用于 Android 的 Google Plus SDK : "Activity started without an EXTRA_ACCOUNT"

java - Spring MVC : Expire privilege flag after 5 minutes for edit

java - 使用基本身份验证保护 Spring Boot REST 应用程序

spring - 使用 FlatFileItemReader 捕获读取行

java - 多态,查找get的类型

Java:实现一个列表

Java 在同一位置找到一个文件,但找不到另一个文件

java - 如何在 Java 中决定 wait() 的循环条件