The way the bytecode is executed, the standard library, possible changes in GC and JIT implementation, other 3rd party libraries.
For example, if the jar code has a call to Thread.stop() and is loaded in Java 11 or later, when it comes to actually call that method you will get a java.lang.NoSuchMethodError exception.
Same applies to other examples.