首页 > 解决方案 > Javax.json.bind 与 Android 问题

问题描述

大家好,我正在尝试将 javax.json-b 与 Android 一起使用并出现错误。所以我使用这一行将库包含在 gradle 中:

实现组:'javax.json.bind',名称:'javax.json.bind-api',版本:'1.0'

然后以通常的方式导入它:

导入 javax.json.bind.annotation.JsonbProperty

编译得很好,但是当我在任何设备上运行它时,它给了我这个:

../../../home/.gradle/caches/modules-2/files-2.1/javax.json.bind/javax.json.bind-api/1.0/10332203cb05f4ab2e8bf058bfd7d99648c5ca68/javax.json.bind-api- 1.0.jar
非法类文件:类模块信息缺少超类型。

所以我清除了 gradle 缓存,以防它是一个坏版本,同样的事情发生了,我从 build.gradle 文件中删除了导入实现行并从 maven 存储库下载了 jar,但我遇到了类似的问题。

我最初认为这意味着 Android 手机上的 Java 版本与编译 jar 的版本不兼容。但我不太相信这一点,现在我认为这是另一回事。任何人都可以为我解释一下吗?

达米安

标签: javaandroidjsonkotlin

解决方案


module-info 仅与 Java 9 及更高版本一起用于 Java 9 添加的新“Jigsaw”模块功能: https ://www.oracle.com/corporate/features/understanding-java-9-modules.html

AFAIK Android 尚不支持 Java 9,但支持大部分(如果不是全部)Java 8。Android Studio 3 是否支持用于 Android 开发的 Java 9?如果支持,支持 Java 9 的哪些特性?

可以删除编译后的文件module-info.class,不用模块的时候不需要。您将在 jar 文件 javax.json.bind-api-1.0.jar 中找到它,您可以使用任何 zip 文件或 jar 工具(如 winzip、winrar、gzip、zip 或 jar)将其删除。


推荐阅读