如何使用Android项目构建路径上需要1.7合规级别的Java项目?

如何使用Android项目构建路径上需要1.7合规级别的Java项目?,java,android,eclipse,intellij-idea,Java,Android,Eclipse,Intellij Idea,我正在使用Eclipse。如果我将主(Android)项目的合规性级别从1.6更改为1.7,则会出现错误: Android要求编译器符合5.0或6.0级的要求。改为找到“1.7”。请使用Android工具>修复项目属性。 如果我将“library”(Java)项目的遵从性级别从1.7更改为1.6,其中的许多代码将无效 检查Java项目的代码并修复每个错误是我唯一的选择吗?尝试清理项目并修复android属性。 链接和我想你可以在这里找到答案: 如果这没有帮助,我建议更新所有android的sdk

我正在使用Eclipse。如果我将主(Android)项目的合规性级别从1.6更改为1.7,则会出现错误:

Android要求编译器符合5.0或6.0级的要求。改为找到“1.7”。请使用Android工具>修复项目属性。

如果我将“library”(Java)项目的遵从性级别从1.7更改为1.6,其中的许多代码将无效


检查Java项目的代码并修复每个错误是我唯一的选择吗?

尝试清理项目并修复android属性。
链接和

我想你可以在这里找到答案:


如果这没有帮助,我建议更新所有android的sdk插件。在更新android的sdk之后,我也遇到过类似的问题,但我错过了更新android构建工具,这导致了很多错误——可能与您的情况相同。

您可以使用jar构建的Java7,但前提是它没有使用Java7的任何特殊功能,否则dx将无法将jvm字节码转换为dalvic格式


但有一个问题:android sdk的默认构建过程(例如来自eclipse)在发现版本错误的类(使用java7编译,dx生成警告并失败)时失败。您应该向dx传递一些参数以删除此类警告。Android studio和Idea的构建过程并不关心此警告,dx尝试将java字节码联合转换为dalvic,尽管类版本不同。

使用IntelliJ Idea而不是Eclipse。在IDEA中,您可以设置产品语言级别(在项目结构中项目)独立于Android SDK。只要代码只使用不影响字节码的1.7特性,它就可以工作(但编译器会给你警告)。通过这种方式,您可以使用菱形、打开字符串和其他语法糖,但使用多重捕获可能会运气不佳。事实上,您甚至可以在陌生的地方使用实验性的1.8特性,如注释,但我还没有测试lambdas(因为IDEA无论如何都会缩写代码)。更多信息请参见标签


由于Android Studio是IntelliJ IDEA的一个特殊版本,它可能具有相同的功能,但我还没有尝试过。

如果您的库确实需要java 7,您也无能为力

否则,请转到库项目设置,转到Java编译器设置,然后选择1.6.class文件兼容性

如果源文件中有错误,则表示库使用的java 7函数不能用java 6字节码编译。你完蛋了


否则,您现在可以导出一个.jar文件,用于android项目。

谷歌刚刚发布了Eclipse ADT 22.6,它增加了对Java 7语言功能的支持。一旦升级到插件的最新版本,编译器的合规性级别将包括1.7选项。

我可能想看到的唯一一件事是,我的问题没有解决方案。yetFix android属性只是将其恢复为1.6。清理项目属性对错误有何影响吗?显然,它修复了错误。我本可以手动完成,但这无助于解决我的不兼容问题。显然,主项目和引用项目需要处于相同的合规性级别,才能使整个项目正常工作。您不能将两者都设置为1.6吗?>如果我将“库”(Java)项目的合规性级别从1.7更改为1.6,许多代码将无效。我想我会手动修复它们,大多数都是强制转换错误。我接受这一点,这似乎是一个很好的方法。知道我是否也可以使用dx因“坏类文件魔术”错误而无法转换的预编译.class文件吗?我想这是不可能的,但值得一问。据我所知不是这样。我的变通方法适用于预编译类文件,但只有当它们在Android Studio 2.3.3中的字节码中不使用任何新功能(即,它们只使用开关打开字符串等)时,产品语言级别选项才不在项目结构中→ 项目