Как подавить "предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса" с помощью Gradle?
Как подавить "предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса" с помощью Gradle?
- Это не дублирующий вопрос.
- Это не во время Proguard, и я не хочу подавлять использование Proguard
- Я хотел бы подавить выполнение обычного
./gradlew assembleDebug
(так как это assertj-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
У меня была такая же проблема, когда я пытался использовать стороннюю библиотеку некоторое время назад. Эта библиотека была скомпилирована для Java 1.3. Я смог исправить это, получив источник этой библиотеки и самостоятельно создав файл jar. Это работает, конечно, только если источники этой библиотеки доступны и готовы к сборке.
Ответ 2
@SuppressWarnings("unchecked")
с заменой непроверенного не помогает?
Дополнительные примеры приведены здесь:
http://www.codejava.net/java-core/the-java-language/suppresswarnings-annotation-examples