Wie funktioniert die Java Classpath Assembly?

  • Ich habe den Klassenpfad immer als selbstverständlich angesehen, d. h. er ist etwas, das für mich von Eclipse, Maven, Ameise usw. behandelt wird. Es ist offensichtlich, dass der Klassenpfad der Ort ist, an dem Java nach binären Klassen sucht, die in einer Anwendung ausgeführt / integriert werden.

    Es gibt jedoch einige Feinheiten, die nicht eindeutig beschrieben werden.

    1) Wie "findet" Java Klassen im Klassenpfad?

    2) Wie werden von Javac Kollisionen beim Blick in den Klassenpfad behandelt?

    3) Was passiert "unter der Haube", wenn Werkzeuge wie maven / ant Elemente zum Klassenpfad hinzufügen / ignorieren? Umfassen diese Tools das Javac-Programm einfach?

    4) Zum Schluss: Gibt es ein Beispiel für einen "manuellen", komplizierten Build für Java, der nicht die moderne Generation von Build-Tools verwendet - nur für Bildungszwecke - welche ist verfügbar?

    22 November 2011
    jayunit100
2 answers
    1. Die Klassenposition ist nur nach dem vollständig qualifizierten Namen hierarchisch. Das Abrufen des Byte-Streams hängt vom Hintergrundspeicher ab, ob er sich im Dateisystem befindet (liest nur die Datei), in einem JAR (liest den zip-Eintrag), in einer DB (erhält die Bytes). Es ist Sache des Classloaders, den FQN in den Bytestrom zu übersetzen.

    2. Implementierungsabhängig. Im Allgemeinen gewinnt zuerst der Klassenpfad, aber das ist keine Anforderung, sondern die einfachste.

    3. Mehr oder weniger.

    4. Sie meinen wie ein alter Makefile -basierter? Oder eine große alte Ameise? Nicht sicher, was Sie fragen. Meist werden Klassenpfade aufgebaut, was einfach ist und Artefakte erzeugt.

    22 November 2011
    Dave Newton
  • man javac und man java beantworten die meisten Ihrer Fragen.

    3) Sie wickeln es einfach ein

    22 November 2011
    foowtf