FindBugs выводит ошибки, такие как «Отсутствующие классы отсутствуют ...», поэтому я проверил его путь к классу, написав это в моем build.gradle
:
findbugsMain {
classpath.each {
println it
}
}
Он ничего не печатает, что означает, что путь к классу пуст. Из различных вопросов о SO я понял, что он должен содержать путь к классам Java (каждый класс, написанный как отсутствующий, является собственным классом).
Я не хочу жестко кодировать это, потому что этот проект должен работать на нескольких компьютерах. Путь к классам нативных классов Java должен быть найден в самом Gradle (он должен быть где-то! Но я не могу найти где).
Я попытался добавить classpath сам, используя:
findbugsMain {
classpath += sourceSets.main.output
classpath += sourceSets.main.compileClasspath
classpath += sourceSets.main.runtimeClasspath
classpath += sourceSets.test.output
classpath += sourceSets.test.compileClasspath
classpath.each {
println it
}
}
но это печатает:
/.../build/classes/java/main
/.../build/resources/main
/.../build/classes/java/test
/.../build/resources/test
/.../.gradle/caches/.../junit-4.12.jar
/.../.gradle/caches/.../hamcrest-core-1.3.jar
Это все еще не включает Java JARS ...
Вот пример отсутствующих классов:
> Task :findbugsMain
The following classes needed for analysis were missing:
java.lang.Object
java.io.PrintStream
java.lang.NoSuchFieldError
java.lang.System
> Task :findbugsTest
The following classes needed for analysis were missing:
java.lang.Object
java.lang.NoSuchFieldError
Я знаю, что очень близок к тому, чтобы найти решение, но на данный момент я не вижу правильной линии ...
Редактировать после комментариев: пытаюсь использовать JAVA_HOME. Согласно этот вопрос :
println org.gradle.internal.jvm.Jvm.current().getJavaHome()
отпечатков /usr/lib/jvm/java-10-openjdk-amd64
. Однако я ожидаю, что это домашняя страница Java 8, потому что это дает JVM, используемую для запуска Gradle, а не ту, которая использовалась для компиляции проекта (указано sourceCompatibily = '1.8'
в моем файле build.gradle
).