如何使用Gradle抑制“警告:忽略匿名内部类的InnerClasses属性”?

如何使用Gradle抑制“警告:忽略匿名内部类的InnerClasses属性”?

  • 这不是一个重复的问题
  • 这不是在Proguard期间,我也不想使用Proguard抑制
  • 我想抑制正常(因为这是./gradlew assembleDebugassertj-core - ./gradlew testDebug)

屬地:

dependencies {
   testCompile "org.assertj:assertj-core:1.7.1"
}

警告:

Dex: warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.assertj.core.internal.cglib.reflect.FastClassEmitter$3) 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.

像这样:

tasks.withType(JavaCompile) {
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7

    configure(options) {
        compilerArgs << "-Xlint:-options"    // Turn off "missing" bootclasspath warning
    }
}

我可以添加什么来禁止显示此警告?compilerArgs

引用:


答案 1

不久前,当我尝试使用第三方lib时,我遇到了同样的问题。该库是为Java 1.3编译的。我能够通过获取该库的源代码并自行构建一个jar文件来修复它。当然,这只有在该库的源代码可用并准备好构建时才有效。


答案 2

@SuppressWarnings("unchecked")与替换未选中没有帮助?更多例子在这里: http://www.codejava.net/java-core/the-java-language/suppresswarnings-annotation-examples


推荐