“忽略InnerClasses属性”警告正在杀死Eclipse

在项目构build时,我有几个导入的jar在Eclipse中有这个错误:

[2011-04-08 16:31:48 - MokbeeAndroid] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class (net.sf.antcontrib.logic.ForEach$1) that doesn't come with an associated EnclosingMethod attribute. This class was probably produced by a compiler that did not target the modern .class file format. The recommended solution is to recompile the class from source, using an up-to-date compiler and without specifying any "-target" type options. The consequence of ignoring this warning is that reflective operations on this class will incorrectly indicate that it is *not* an inner class. 

现在,我一开始并不在乎,因为没有错误。 但是我现在添加了Apache Sanselan,它有同样的问题。 其他的Apache jar也是这样做的,不是每个jar一次,而是每个class-that-an-an-class-class,这使得每个版本都会抽出一个怪异的控制台日志。 更糟糕的是,每个警告似乎都会使Eclipse构build过程变慢,最终Eclipse由于内存溢出错误而崩溃。 就在我无法构build任何东西的时候,即使在我的电脑启动后也是如此。

解决scheme似乎是重新编译源代码(开放源代码和所有),但没有一个是可以重新编译的,除了Maven,在这样做之后无济于事,我怀疑是造成这个问题的原因。

我不在乎这个警告的结果,只是Eclipse并没有把所有的记忆都告诉我。 那么,有没有办法消除这个问题, 或者让Eclipse停止放慢速度(也许跳过这个检查)?

这引起了我很多的痛苦与android-maven-plugin和其他库包括commons-logging 。 这阻止了我的构建。 更糟糕的是,一些库被包含在内,所以简单地使用<exclude>将不起作用。 从另外一篇文章的一点提示,我确定我可以用这样的东西完全排除违规的图书馆:

  <!-- prevent commons-logging from being included by the Google HTTP client dependencies --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> <scope>provided</scope> </dependency> 

如果您在Maven中重新编译库的来源,您可能需要将POM中的Java版本更新到1.6(或者您为项目使用的任何Java版本)。 只是从看桑塞兰,我注意到它具体有1.4作为版本。