Prog 2 Classpath Opdateret 

Packages, classpath and .jar files

Hvad består JDK af?

JDK består bl.a. af Bemærk, forskellen mellem javac og java - de må ikke forveksles!

Valg af editor

JDK indeholder ingen editor. Du kan bruge din egen favorit-editor f.eks. Husk, at gemme dine filer med extension .java. Default extension i ovenstående editorer er henholdsvis .txt,.doc og .java..
Java-compileren (javac) vil kun have filer med extension.java.

Tilføjelse til PATH

Programmerne javac og java kan kaldes direkte fra en DOS-prompt.
Før du kan kalde dem skal kataloget, hvor disse programmer ligger tilføjes til din PATH.
Det gør du ved at tilføje en linie til filen c:\autoexec.bat:
  1. Tag c:\autoexec.bat ind i en editor f.eks. notepad.
  2. Tilføj en linie sidst i filen SET PATH=%PATH%;C:\JDK1.4.2\BIN
  3. Gem filen og forlad notepad.
  4. Genstart pc'en (husk at lukke åbne programmer inden).
  5. Skriv "set" i DOS-prompten og konstater at PATH indeholder JDK1.4.2\BIN.
Hver gang et program skal startes fra DOS-prompten, så leder Windows i de kataloger der står i PATH'en, indtil det finder filen. Hvis filen ikke findes i et katalog i PATH'en, så kan det ikke umiddelbart startes fra DOS-prompten [men filen kan sagtens findes i filsystemet - det er ikke alle kataloger, der er med i PATH'en].

Programmerne javac og java ligger i kataloget C:\JDK1.4.2\BIN, hvis du har foretaget en standard-installation. Hvis du har valgt at installere JDK i et andet katalog eller på et andet drev, så skal du naturligvis rette i ovenstående tilføjelsen til autoexec.bat.

Hvad er en CLASSPATH?

Java bruger internt en såkaldt CLASSPATH til at finde klasser i andre kataloger.
CLASSPATH sættes ligesom PATH.
Brugerdefinerede packages (dem du selv laver) til en bestemt systemkomponent kan med stor fordel anbringes som underkataloger til et bestemt katalog.  Stien til dette katalog inkluderes i CLASSPATH, hvorved de respektive packages kan findes af compileren og anvendes i brugerprogrammet. Hvis du ofte får fejlmeddelser som class not found in import så bør du lave nedenstående ændringer.

Eksempel Windows 9X: Antag at du har lavet 3 packages: pack1, pack2 og pack3 alle anbragt i kataloget mypackages. For at få adgang til  klasserne i de tre packages tilføjes flg. linie sidst i filen autoexec.bat:

    SET CLASSPATH=%CLASSPATH%;C:\homedirectory\mypackages

Herefter vil Java-compileren også lede i mypackages efter packages.

Eksempel Windows 2000 (XP): Antag at du har lavet 3 packages: pack1, pack2 og pack3 alle anbragt i kataloget mypackages. For at få adgang til  klasserne i de tre packages vælges:

    Start menu -> Kontrolpanel -> -> System -> Avanceret ->Miljøvariable

Nu popper et skema op som udfyldes med:
    Navn: classpath
    Værdi: C:\homedirectory\mypackages
Herefter vil Java-compileren også lede i mypackages efter packages og deres klasser.

Hvad er jar ?

Java Archive (jar) er Javas system til at komprimere (vha. zip) og samle .class filer i et arkiv.
Ved at tilføje stien til arkivet til CLASSPATH kan Java-compileren fremfinde .class filerne.
Senere kan arkivet udvides med nye .class filer ligesom der kan fjernes .class filer fra arkivet.
jar har en række options bl.a.:
        c    create new archive
        v    generate verbose output on standard output
        f    specify archive file name
        u    update existing archive
En fuldstændig beskrivelse fås ved fra DOS-prompten at give kommandoen:

     jar

Javas archive system letter systematiceringen betydeligt. Hvis f.eks. en applet skal bruge mange filer er det en kæmpe fordel en og kun en gang at skulle overføre (og huske navnet på!) på en af disse filer som en archive file.

Eksempel: Antag at du har lavet 2 .class filer:  my1.class og my2.class og ønsker at gemme dem i arkivet myclasses.jar. Fra DOS-prompten gives flg. kommando:

    jar -cvf myclasses.jar my1.class my2.class

hvorefter arkivet kan flyttes til et passende katalog.
Senere tilføjes filen mynew.class vha. kommandoen:

  jar -uvf myclasses.jar mynew.class

Eftersom jar gemmer special Metadata om klasserne kan man ikke bare .zippe filerne.
Enkelte editorer (Netbeans ?) tilbyder jar faciliteten på projekter.
 
 
 

Vedligeholdes af claudius@rhs.dk