编译期间输出的“忽略InnerClasses属性”警告输出是什么?

我是Android Ical4j ,正在使用Ical4j库来parsingICS(Outlook日历)文件。

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

警告:忽略一个匿名内部类的InnerClasses属性,该类没有附带EnclosingMethod属性。 (这个类可能是由一个破碎的编译器产生的。)

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

包含jar文件时这很常见。 虽然如果你正常使用API​​,警告并不是什么问题,但你应该能够通过在Eclipse中从源代码编译ical4j(或者构build一个新的jar,或者直接将源代码放入你的自己的源文件夹)。 虽然我应该强调,除非你真的遇到问题,这是不值得担心的。

如果您的应用程序和库已经全部使用新的JDK(7+)构build,而您仍然可以获得此function,则可以通过告诉Proguard保留封闭的方法属性来解决此问题。 只需将以下内容添加到您的Proguard规则中:

-keepattributes EnclosingMethod

当使用kso​​ap2库时,我有同样的错误。

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

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