I am working on a Java SE project that has both a library part (a few packages of public
classes) intended to be used by programs written by others and an applications part (classes with main()
methods) that use that library. So the installation evironment must handle the possibility of there being multiple applications programs simultaneously present and using different versions of the library. Any ideas on how to handle this? How do people avoid JAR hell?
A future version of Java will incorporate the Jigsaw functionality. Enterprise applications can make use of the OSGi component functionality. But what about non Enterprise applications now? Is there anything simpler than OSGi that gets the job done?
Edit, after some preliminary answers: I can handle the build-time dependency problem reasonably well using our version control and build process. Its help with the run-time dependency problem I'm really interested in.