Java JDK 11 Breaking Old Jars/Programs

Java tries to be backward compatible but sometimes breaking changes are necessary to evolve the ecosystem. Until now breaking changes were shipped with major release e.g. Java 9, 10, 11. In your case you are most likely affected by Java 11's JEP 320: Remove the Java EE and CORBA Modules.

Remember that Java 8 was released in 2014. For 5 years Oracle and the Java community provided patches and security fixes for Java 8 but doing this forever is impossible.


The issue you are facing is likely not an incompatiblity w.r.t. the bytecode. It is just a missing class.

Java 11 dropped the support of some old technologies - for example Java Applets. If you run a Java 8 Applet in a Java 11 JDK / JRE you will get a ClassNotFound exception just because Java 11 does not provide the class / jar.

Similarly for JavaFX, which still exists, but is not longer part of the Java Distribution. You have to add it as a separate Jar.

I believe it would be possible to add these classes to a project. Personally I would like to see a port.