You can take a library compiled with Java 1.4 and have it run with Java 7.
That's the key point that is made here. The fact that version compatibility at the patch level is laughable; that should have been the default, not an additional selling point later.
The problem is that it's impossible to create a library (like log4j) and then make it available/support it across different versions. Each time you need to release a build, you have to build different versions - one for 2.9, one for 2.10 - in order to work.
At some point that breaks down; one key library in your chain no longer compiles on 2.9, so you have to move everything to 2.10 to do further work. It's the transitive closure for all those libraries and their dependencies that will get you in the end.