You cannot use any pre-Hadoop 2.8 component anymore with the latest release candidate build of Java 9, because it fails with an StringIndexOutOfBoundsException in org.apache.hadoop.util.Shell#<clinit>. This leads to a whole cascade of failing classes (next in chain is StringUtils).
The reason is that the release candidate build of Java 9 no longer has "-ea" in the version string and the system property "java.version" is now simply "9". This causes the following line to fail fatally:
- This code looks wrong, as comparing a version this way is incorrect.
- The substring(0, 3) is not needed, compareTo also works without it, although it is still an invalid way to compare a version.