Content deleted Content added
nominated for deletion |
Petri Krohn (talk | contribs) cleanup, wikified, restored Category:Anti-patterns |
||
Line 10:
{{{category|[[Category:Articles for deletion]]}}}
<!-- End of AfD message, feel free to edit beyond this point -->
'''Jar Hell''' arises in the [[Software development|development]] and deployment of [[computer
Computer programs often make use of
In the Java language, libraries are typically packaged in
This "classloading" process is actually fairly complicated, and is the subject of much confusion. For our purposes here, the important fact is this: that a class with a given name can only be loaded '''once''' by a given [[classloader]].
== Malfunction ==
* Another version of the problem arises when two libraries (or a library and the application) require different versions of the same third library. Without taking extraordinary measures (which may or may not even be available, depending on the circumstances) there is no way to load both versions of the third library.
* The most complex
▲The most complex "Jar hell" problems arise in circumstances that take advantage of the full complexity of the classloading system. A Java program is not required to use only a single "flat" classloader, but instead may be composed of several (an indefinite number, in fact) nested, cooperating classloaders. This is not as uncommon as one might think: so-called "servlet containers" are typically implemented in terms of multiple classloaders. The interactions between classloaders is too complex to be fully described here. It is sufficient to say that classes loaded by different classloaders interact in ways which may not be fully comprehended by the developer, leading to inexplicable errors or bugs.
== See also ==
*[[Apache Maven]], automated software build tool with dependency management
*[http://www.jayasoft.org/ivy, Dependency manager], now at Apache incubator: [http://incubator.apache.org/projects/ivy.html]
[[Category:Java programming language]]
[[Category:Anti-patterns]]
|