Unknown constant: 18
most probably refers to CONSTANT_InvokeDynamic
tag in the class file’s constant pool which has the value 18
. This can’t be a JDK issue as even Java 7 understands that tag.
So it is an indicator for a byte code manipulation tool running in your runtime not understanding newer class files (but trying to process them despite the unknown version number). That worked with Java 7 as the invokedynamic
feature exists but is not used with ordinary Java 7 class files (i.e. produced by javac
).
Since you knew if you used bytecode manipulation by yourself, it must be part of a framework, i.e. you named heroku and the playframework. So you problem is not about updating the JDK but updating the frameworks to Java-8-aware versions, if such versions already exist.