I did some testing to work around
HADOOP-14586 and found a temporary solution. All tests pass with Java 9 build 175 (HDFS, Hadoop Auth / Kerberos).
This is a temporary workaround until we can upgrade Hadoop, see
The trick here is a hack: The Hadoop Shell class tries to parse java.version system property, which is simply "9" on the Java 9 GA / release candidate. It contains no dots and is shorter than 3 characters. Hadoop tries to get the substring(0,3) and fails with an IndexOutOfBoundsException in clinit. To work around this, we do the following on early Solr startup / test startup (in a static analyzer, like we do for logging initialization):
- set java.version system property to "1.9"
- initialize the Shell class in Hadoop
- restore the old value of java.version
The whole thing is done in a doPrivileged. I ran some tests on Policeman Jenkins, everything works. The hack is only done, if we detect Java 9.