I couldn't agree more with your suggestion. Java needs a jar registry in the same way .Net has one.
I would like to be able to say that classes from jar A depend on classes from version x.x of Jar B. So I can distribute different (even incompatible) version of the same jars and have classes loaded from them 'side by side'. This would solve the incompatibilities in versions in 'libraries' like Xerces plus any project that wants to be anything other that monolithic needs a mechanism that lets you update at a level lower than 'application'. It would enable this too.
Of course I could write an application that uses custom classloaders but that not what I want to be doing and this will only make my project longer.
For once Microsoft got this right. Sun should sort this as a matter of some urgency.