【问题标题】:How do I use a Java project that requires a 1.7 compliance level on an Android project build path?如何在 Android 项目构建路径上使用需要 1.7 合规级别的 Java 项目?
【发布时间】:2013-08-23 20:27:23
【问题描述】:

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

Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.

如果我将“库”(Java) 项目的合规级别从 1.7 更改为 1.6,其中的很多代码都会失效。

是否正在检查 Java 项目的代码并修复每个错误,这是我的唯一选择?

【问题讨论】:

  • 可能想看看these SO answers
  • 我唯一得到的就是我的问题还没有解决方案

标签: java android eclipse


【解决方案1】:

Google 刚刚发布了 Eclipse ADT 22.6,它增加了对 Java 7 语言功能的支持,http://developer.android.com/tools/sdk/eclipse-adt.html。升级到插件的最新版本后,编译器合规性级别将包括 1.7 选项。

【讨论】:

    【解决方案2】:

    尝试清理您的项目,并修复 android 属性。 链接herehere

    【讨论】:

    • 修复 android 属性只是将其恢复到 1.6。
    • 清理项目属性是否会对错误产生影响?
    • 显然,它修复了错误。我可以手动完成,但它对我的不兼容问题没有帮助。显然,主项目和引用的项目需要处于相同的合规级别才能使整个项目正常工作。
    • 你不能同时设置 1.6 吗?
    • > 如果我将“库”(Java) 项目的合规级别从 1.7 更改为 1.6,很多代码都会变得无效。我想我会手动修复它们,其中大多数是演员错误。
    【解决方案3】:

    我想你可以在这里找到答案:Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties

    如果这没有帮助,我建议更新所有 android 的 sdk 插件。在更新 android 的 sdk 后,我也遇到了类似的问题,但我错过了更新 android 构建工具,这导致了很多错误 - 可能和你一样。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        使用 IntelliJ IDEA 代替 Eclipse。在 IDEA 中,您可以将 产品语言级别(在 Project StructureProject 中)与 Android SDK 分开设置。只要您的代码仅使用不影响字节码的 1.7 功能,它就可以工作(但编译器会给您警告)。这样,您可以使用菱形、打开字符串和其他语法糖,但您可能无法使用 multi-catch。事实上,你甚至可以在奇怪的地方使用像注释这样的实验性 1.8 功能,但我还没有测试过 lambdas(因为 IDEA 无论如何都会缩写代码)。有关详细信息,请参阅 标签。

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

        【讨论】:

        • 我会接受这个,这似乎是一个好方法。知道我是否也可以使用 dx 无法转换的预编译 .class 文件并出现“错误的类文件魔术”错误?我认为不可能使用这些,但值得一问。
        • 我不知道。我的解决方法适用于预编译的类文件,但前提是它们不使用字节码中的任何新功能(即它们只使用开关字符串等)
        • 在 Android Studio 2.3.3 中,产品语言级别选项不在项目结构 → 项目中
        【解决方案6】:

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

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

        如果您的源文件中有错误,这意味着您的库使用了无法在 java 6 字节码中编译的 java 7 函数。你完蛋了。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多