Mich würde z.B Interessieren was wird zuerst benutzt die JDK im Path oder die im Classpath?
Im Classpath soll überhaupt kein JDK stehen. Höchstens jars oder zips von Zusatzklassen.
Ich habe den Classpath theoretisch grundsätzlich leer und setze das pro Projekt (mit Eclipse kein Problem). Theoretisch, weil ich seh grade, dass da so ein aufdringliches Produkt wieder was bei der Installation reingeschrieben hat. Ich schmeiss das da wieder raus.
Die Betriebssystem-Variable Classpath wirkt ähnlich wie die Win-Registry. Das gilt dann quasi als shared-library und das kann wirklich zu Problemen führen, wenn dein Projekt eine andere Version eifner Klasse benötigt. Die benutzt nämlich die shared library. Link auf gute Erklärung später.
Im Path sollte das bin Verzeichnis des jsdks stehen (gute Idee).
Ausserdem müssen da oft bestimmte Pfade eingetragen werden, wenn bestimmte Java Komponenten Zugriff auf bestimmte C-libraries brauchen (bei mir zur Zeit: Notes, Websphere MQ, SWT)
WICHTIG: Jedoch benutzt Tomcat - wenn ich mich recht erinnere - eine Betriebssystem-Variable JAVA_HOME, die du auf das JSDK-root Verzeichnis setzen solltest.
Ich bin da nicht mehr sooo drin, weil ich Tomcat nun immer mit dem SysDEO Plug-in von Eclipse manage oder aus WSAD.
Hier Info zu Tomcat Classloading:
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/class-loader-howto.htmlClassloader verhalten sich in aller Regel (es gibt Sondereinstellungen in Websphere) hierarchisch-von-unten-nach-oben.
Probleme machen Klassen, die den gleichen vollqualifizierten Namen (mit package-Namen) haben, aber unterschiedlich sind. Von-unten-nach-oben heisst, dass die Klasse genommen wird, die möglichst weit unten in der Class-Loading Hierarchie steht.
Beispiel: Stell dir einfach vor, Du würdest eine Klasse java.util.HashMap erstellen. Die würde nie gefunden, weil im Bootstrap Classloader weiter unten die Version dieser Klasse vom VM-Ersteller geladen wird.
Gruß Axel