java - 如何在 android 上使用 java 8 库?

标签 java android

我正在尝试在我的 android 项目中使用一个使用 java 8 的库。我找不到一种方法来完成这项工作。我试过使用 retro lambda 但它没有帮助。我不断收到错误消息:com.android.dx.cf.iface.ParseException:错误的类文件魔法 (cafebabe) 或版本 (0034.0000)

我对此进行了研究并了解到这是因为包含的库中有 java 8 语法。我一直在使用 java 8 sdk 进行编译,并且正在使用 android studio 08.2。帮助! 图书馆是:https://github.com/robrua/Orianna

最佳答案

方案一

等待android支持Java8。

解决方案2

使用不是 Java8 的早期版本的库和/或要求库的开发人员提供一个/最新的 Java6(或 Java7 for kitcat upwards)库。

方案三

这是某种 hack,我还没有测试甚至没有使用过它!

使用retrolambda将 Java8 字节码反向移植到 Java6。在 retrolambda 的主页上,您可以找到一些关于它的文档。 retrolambda 的下载是 here .

可能您必须将库 jar 解压缩到一个文件夹并运行如下命令:

java -Dretrolambda.inputDir=<extracted_classfiles>
     -Dretrolambda.classpath=<extracted_classfiles>
     -Dretrolambda.bytecodeVersion=50
     -javaagent:retrolambda.jar
     -jar retrolambda.jar

也许您必须根据库的依赖项扩展类路径。 然后,您必须将生成的 jar 文件复制到您的 android 项目的 lib 文件夹中。

也可以program Java8 for android .

如果 retrolambda 不起作用,也许您可​​以找到另一个工具将 Java8 字节码反向移植到 Java6 字节码。

关于java - 如何在 android 上使用 java 8 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24795161/

相关文章:

android - 在这种情况下需要 Firebase 查询方面的帮助

java - 从客户端调用实现线程事件的服务器端应用程序的方法的最佳实践是什么?

java - maven-release-plugin 是否与 Java 9 兼容?

java - Junit 预期异常失败

java - 在java中将json解析为hash

android - java.lang.ClassCastException : android. text.SpannableStringBuilder 无法转换为 java.util.ArrayList

java - 使用ImageIO读取JCS_YCCK图像

java - Volley使用post方法时向服务器发送空参数

java - 在 native 应用程序中使用 Appium 处理弹出窗口

java - SharedPreferences 始终返回自定义对象的默认值