Using isJava8Compatible() fails with java 9

Calling any of the “isJavaXCompatible” methods will fail on java 9. This can be traced to the commons-lang call used to do the comparison. It was fixed in commons-lang 3.4, but it looks like gradle 2.8 uses commons-lang 2.6.

https://issues.apache.org/jira/browse/LANG-1027

Are you seeing the failure coming out of a plugin? We don’t use commons-lang for that comparison:

Yeah, it came from the nebula ospackage plugin.

Caused by: java.lang.NullPointerException
at org.apache.commons.lang3.SystemUtils.isJavaVersionAtLeast(SystemUtils.java:1371)
at org.apache.commons.lang3.SystemUtils$isJavaVersionAtLeast.call(Unknown Source)
at com.netflix.gradle.plugins.deb.filevisitor.DebFileVisitorStrategyFactory.getStrategy(DebFileVisitorStrategyFactory.groovy:18)

Sorry, I hadn’t noticed the netflix part of the stacktrace before. But is it not correct that gradle plugins cannot have divergent dependency versions with those gradle pulls in?

https://issues.gradle.org/browse/GRADLE-1715

Ah, thanks!

It looks like they’ve fixed that, but it hasn’t been released yet: https://github.com/nebula-plugins/gradle-ospackage-plugin/commit/300349ab598ece152ea7e382c5323b3c168d2bef

Yes, that’s one of the limitations with the way we load plugin classloaders. It seems like we barely use the commons-lang dependency, so we might be able to just remove it.