【问题标题】:What is the "Ignoring InnerClasses attribute" warning output during compilation?编译期间的“忽略 InnerClasses 属性”警告输出是什么?
【发布时间】:2011-03-19 11:47:39
【问题描述】:

我是 Android 新手,正在使用 Ical4j 库来解析 ICS(Outlook 日历)文件。

但是,当我在 Eclipse 中构建应用程序时,控制台中多次出现以下警告:

[2010-07-22 15:58:31 - Google Calendar Upload] 警告:忽略不带有关联 EnclosureMethod 属性的匿名内部类的 InnerClasses 属性。 (这个类可能是由损坏的编译器生成的。)

这有什么影响?我该如何解决这个问题?

【问题讨论】:

    标签: android compiler-warnings


    【解决方案1】:

    如果你的应用程序和你的库都是用新的 JDK (7+) 构建的并且你仍然得到这个,那么你可以通过告诉 Proguard 保留封闭方法属性来解决这个问题。只需将以下内容添加到您的 Proguard 规则中:

    -keepattributes EnclosingMethod

    【讨论】:

    • 对我没有影响。帮助我的是清理项目然后制作项目。
    • OP引用的这个警告来自DEX,而不是ProGuard;我正在编译测试源,但我看不出添加一个未使用的 ProGuard 选项会有什么帮助。
    • 这适用于项目中编写的代码,但不适用于在没有此配置的情况下已经混淆的 jar 库。但我想可能没有办法改善它。
    【解决方案2】:

    这在包含 jar 文件时很常见。虽然如果您只是正常使用 API,则无需担心警告,但您应该能够通过自己从 Eclipse 中的源代码编译 ical4j 来摆脱它们(构建一个新 jar,或者只是将源代码放入您的自己的源文件夹)。虽然我应该强调,除非你真的遇到问题,否则这不是值得担心的事情。

    【讨论】:

    • 更多细节请教,我不明白该怎么办=/
    • @zhelon,除非它给你带来问题,否则你真的不需要做任何事情。
    • 有没有办法抑制这个警告?我收到了大量垃圾邮件。
    • @Malabarba 你可以访问源代码吗?使用更新的 Java 版本重新构建它。
    • 我仍然从使用 JDK-1.7 构建的库中收到此错误消息。如果不相关,需要一些更好的删除说明或消除警告的方法。
    【解决方案3】:

    我在使用 ksoap2 库时遇到了同样的错误。

    为了摆脱它,我下载了 DJ Java Decompiler 以将 .jar 文件反编译为 .java 文件。 之后,我使用 Eclipse 将 .java 文件编译为 .jar 文件。

    【讨论】:

    • 您可以只从源代码重新编译而不是反编译。它在 github 上。这个问题也来自为 java 1.3 编译的 ksoap2-android。
    • 我没有找到我正在使用的版本的正确来源,但感谢您的评论。
    【解决方案4】:

    将构建工具和支持库更新到相同版本

    【讨论】:

    • 虽然这个答案可能有更多关于 why 的详细信息,但这将有助于这不是一个错误的答案......它只是无助于理解问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 2018-06-25
    • 2013-06-13
    • 2016-07-29
    • 2018-03-18
    • 2015-01-15
    相关资源
    最近更新 更多