Java Programmierung mit > Eine Einführung in eine Objektorientierte Sprache Mark Egloff 2006 1 Java Programmierung mit Lernziele des Gesamten Kurs > Sie kennen die Grundlagen der Objektorientierten Programmierung. Sie erstellen einfache JAVA Programme mit GUI, Applets und Konsolenapplikationen. > Sie wissen welche verschiedenen Gebiete durch das Java 2 SE API abgedeckt werden und können die behandelten Technologien wirksam einsetzen. Mark Egloff 2006 2 Java Programmierung mit Lernziele Heute > Einblick in die Technologie Java > Vorteile, Nachteile aufzeigen. > Konzept und Arbeitsweise verstehen. > 1. eigenes Programm erstellen. Mark Egloff 2006 3 Java Programmierung mit Ablauf Heute - Themen > > > Vorstellung Überblick Modul „Programmierung mit Java“ Was ist Java ? > Einsatzbereiche von Java > > Eigenschaften von Java, Vorteile und Nachteile Konzept und Arbeitsweise von Java Mark Egloff 2006 4 Java Programmierung mit Vorstellung Hallo, ich bin der << Mark (Egloff) >> > www.megloff.ch [email protected] > Gelernter Elektroniker, studierter HTL Elektroingenieur, zertifizierter Sun Enterprise Architekt und OpenSource Web-Freak (JSP, PHP, Javascript, HTML, XML …) > Arbeite als Business Analyst und Consultant in IT- Grossprojekten www.logicacmg.com > Erfahrung mit Java seit 1998 > Unterrichte an der TSU seit 2001 > Andere Kurse „XML mit Java OpenSource“ Mark Egloff 2006 5 Java Programmierung mit Überblick Modul „Programmierung mit Java“ 1 2 Technologie Java 01.02. 2006 8 Prüfung 1 3 4 Daten typen Prozed. Progr. OOP1: Klassen Objekte 9 10 11 Collections 1 Collections 2 5 OOP2: Packg. Instanzen 12 Excpetions Prüfung 2 05.04. 6 OOP3: Sichtb. Interfaces 7 UML 13 14 GUI1: AWT Applets 31.05. 15 GUI2: SWING 16 17 18 Threads Serialisierung Modul prüfung 12.07. Mark Egloff 2006 6 Java Programmierung mit Überblick Modul Voraussetzungen / Erwartungen > > > > > > > > Wenn möglich Erfahrung mit einer Prozeduralen Programmiersprache (VB,C,Delphi,PHP,Perl,JavaScript …) Notebook (min. 1GHz, 512MB RAM, Windows 2000 oder XP, Linux) Bereitschaft ca. 2 - 4h pro Woche zusätzlich Wenn etwas unklar ist bitte Fragen…. Fragen, Fragen, Fragen … Unterlagen ordnen, Indexieren, Eigene Zusammenfassungen, Eigene Notizen… Jederzeit Email oder Telefon 24h Service [email protected] tel. 079 42 43 41 2 Mark Egloff 2006 7 Java Programmierung mit Überblick Modul - Empfohlene Literatur > Java ist auch eine Insel (Java Grundlagen) www.java-tutor.com, Galileo Computing, ISBN 3-89842-304-2 > Java in a Nutshell (Java Sprach Referenz) O’Reilly, english ISBN 0-596-00773-6, deutsch ISBN 3-89721-332-x > Java Foundation Classes (Java GUI, AWT, Swing Referenz) O’Reilly, english ISBN 1565924886 > Objektorientierte Softwareentwicklung (UML und OOP) Bernd Oestereich, Oldenburg, ISBN 3-486-24787-5 > Entwurfsmuster (Designpatterns) (OOP) Erich Gamma, Addison Wesley, ISBN 3-8273-2199-9 Mark Egloff 2006 8 Java Programmierung mit Überblick Modul - Links > Java SUN java.sun.com > Java API java.sun.com/j2se/1.4.2/docs/api/ > Java ist auch eine Insel (eBook, Einstiegs Ressourcen) www.java-tutor.com > Jakarta Projects (OpenSourceKits) jakarta.apache.org > Netbeans (free IDE, Development Tools) www.netbeans.org > Eclipse (free IDE, Development Tools) www.eclipse.org > OOSE (UML und OOP) www.oose.de Mark Egloff 2006 9 Java Programmierung mit Übersicht Java Technology > Was ist Java ? Mark Egloff 2006 10 Java Programmierung mit Übersicht Java Technology > Was ist Java ? Java ist …. > > > eine plattformunabhängige OO Programmiersprache ursprünglich von der Firma Sun Microsystems, entwickelt wurde. sowie natürlich die Hauptinsel Indonesiens, als auch eine kleine Insel im Pazifik, deren Hauptexportprodukt Kaffee ist und damit der umgangssprachliche Ausdruck für Kaffee in den USA. Mark Egloff 2006 11 Java Programmierung mit Übersicht Java Technology > Was kann man mit Java machen ? … ALLES !!! > Animationen, Laufbänder, Chats auf Web-Seiten, Animacons, Taschenrechner, Spiele, Verschlüsselungs-programme, interaktive Web-Seiten, Musik, Text-verarbeitungen, kleine Internet-Applets, riesige Programmpakete, Bildverarbeitungsprogramme, neuartige Benutzeroberflächen, Übersetzungsprogramme, Bestellsysteme, Lernanwendungen, Uhren, Tabellenkalkulationen, Rechtschreibprüfungsprogramme, usw. usw. Mark Egloff 2006 12 Java Programmierung mit Übersicht Java Technology > Was Java NICHT kann… Kaffee kochen… ;-) > Jede Technology hat seine Vor und Nachteile, wie werden diese gleich kennen lernen (ein paar Folien weiter hinten…) Mark Egloff 2006 13 Java Programmierung mit Übersicht Java Technology - Einsatzbereiche > > > > > Standalone Applikationen (Workstation) Spiele, Tools, Algorithmen, grafische Anwendungen Verteilte Systeme (Client / Server) TCP/IP, Webanwendungen, Integration, Services Applikations-Server (Enterprise Applications) Content Mgmt, Workflow, CRM, Rule Engines Portable Systeme PDA, Handy, MP3 Player, Camcorder Embedded Systems Haushaltgeräte, Multimedia, Automaten, Industrie Mark Egloff 2006 14 Java Programmierung mit Übersicht Java Technology - Geschichte > 1982 SUN Microsystems > 1990 Geheimes Projekt „Green“ > 1991 Programmiersprache „Oak“ > 1992 „*7 - Star Seven“ (portabler Minicomputer) Firmengründung „First Person“ > 1996 „Oak“ „Java“ Firmengründung „JavaSoft“ (www.javasoft.com) JDK 1.0 & HotJava Browser > 1997 Java Workshop / 1. verteilte Applikationen mit Applets JDK 1.1 (Java AWT) > 1998 JDK 1.2 (Swing, Servlets) JCP (Java Community Process) > 1999 J2SE (JDK 1.3) und J2EE 1.0 > 2001 JDK 1.4 beta und J2EE 2.0 > 2004 JDK 1.5 Mark Egloff 2006 15 Java Programmierung mit Übersicht Java Technology - Einsatzbereiche Im Modul Mark Egloff 2006 16 Java Programmierung mit Übersicht Java Technology Java 2 Plattform Übersicht Im Modul J2EE J2SE Mark Egloff 2006 17 Java Programmierung mit Übersicht Java Technology Java 2 Plattform, Standard Edition (J2SE) Im Modul Mark Egloff 2006 18 Java Programmierung mit Übersicht Java Technology Java Enterprise Edition (J2EE) Beispiel einer verteilten Basis-Architektur für Businesslösungen J2SE Im Modul Mark Egloff 2006 19 Java Programmierung mit Übersicht Java Technology Java Enterprise Edition (J2EE) SoftwareEngineering Prozess mit Java Enterprise Edition Mark Egloff 2006 20 Java Programmierung mit Merkmale von Java (1/2) > Architekturneutral / Plattformunabhängig Java Interpreter gibt es fast für jede Plattform. Natürlich wird nicht immer alles unterstützt > einfach erlernbare Sprache Der Syntax von Java ist einfach gehalten, strenge Regeln & Typisierung, > Modern Die Sprache lebt wird ständig erneuert. Java Community Process (JCP) > Objektorientiert streng Objektorientierung, erlaubt strengere Strukturierung der Programme > „Dezentral“ (verteilte Systeme) Die Grundversion von Java bietet schon alles für Netzwerk/Web-Anwendungen > Robust & Sicher Java Appl. laufen in „Containers“, API für Security wie User, Rollen, Rechte… Mark Egloff 2006 21 Java Programmierung mit Merkmale von Java (2/2) > "multithread"-fähig Innerhalb seines „Containers“ kann Java parallele Tätigkeiten (Thread) ausführen und verwalten. Synchronisation zwischen den Tätigkeiten > Dynamisch Statische Typenbindung, aber späte Methodenbindung, lädt zur Laufzeit Klassen / Libraries nach und kann diese zur Laufzeit auch austauschen > Automatische Speicherverwaltung (Garbage Collector) Java reserviert und gibt Speicher automatisch frei > „Klein“ Embedded Systems ab ca. 4MB > grosse umfangreiche Klassenbibliothek (API) > „Nahtlos“ Integrierbar mit anderen Technologien (DCOM, C++, C#, CORBA, XML, Webservices…) > „frei“ verfügbar Mark Egloff 2006 22 Java Programmierung mit Sprach Unterschiede zu C++ > Kein Präprozessor > Keine überladenen Operatoren > Automatische Speicherverwaltung > Speicher kann nicht explizit freigegeben werden > Templates (ist aber nun in Java 1.5 enthalten) > Kennt nur Referenzen, keine Zeiger > Übergabe von Objekten „by Reference“ > Manipulation von Adressen nicht möglich > Strengere Typenprüfung, „wildes“ Casting nicht möglich > Security Model Mark Egloff 2006 23 Java Programmierung mit Generelle Unterschiede Java zu MS .NET Element: Java (J2EE): Microsoft .NET: Entwicklungs- Standard Java Prozess Community Process Microsoft Product Hersteller Microsoft 30+ Compiled Code Java ByteCode MS IL Interpreter JRE (JVM) CLR Dynamische WebPages JSP, Servlets ASP.NET Components Enterprise Java Beans .NET Managed Components DB Access JDBC,SQL/J, JDO, Hibernate EJB 3.0 ADO .NET Security Integriert Who & Code Trust Integriert Centralized .Net Password Mark Egloff 2006 24 Java Programmierung mit Konzept von Java > Wie funktioniert Java ? Mark Egloff 2006 25 Java Programmierung mit Konzept von Java - Traditionelle SW Erstellung (1/3) 1) Quellcode prog .cc 2) MaschinenCode GNU CC prog .oo GNU Link Linker Compiler LIBs 3) Prog.exe LIBs Libraries / Config Libraries / Config Plattform A (z.B. Windows XP SP2) Mark Egloff 2006 26 Java Programmierung mit Konzept von Java - Traditionelle SW Erstellung (2/3) Erstellung eines Programms 1) Mit einer Programmiersprache wird Quellcode erstellt. 2) Compiler übersetzt Quellcode in Maschinencode (binär und architekturabhängig). Dabei werden plattformabhängige Ressourcen verwendet 3) Der Linker bindet diesen mit den Ressourcen des Betriebssystems zusammen und erstellt ein ausführbares Programm. (binär und architekturabhängig). Das so erstellte Programm ist nur für eine bestimmte Plattform „brauchbar“ Mark Egloff 2006 27 Java Programmierung mit Konzept von Java Traditionelle SW Erstellung (3/3) prog .cc Compiler A Linker A Plattform A Windows XP SP2 prog .cc Compiler B Linker B Plattform B Windows NT Server 4 prog .cc Compiler C Linker C Plattform C Linux SuSE 10 Für jede Plattform müssen bestimmte Compiler und Linker etc. verwendet werden Mark Egloff 2006 28 Java Programmierung mit Konzept von Java - ByteCode & Interpreter (1/3) 1) Quellcode 2) ByteCode 3) prog .java prog .class javac java Interpreter Compiler LIBs LIBs JRE JRE Plattform A z.B. Windows XP SP2) Plattform B z.B. Linux SuSE 10 Mark Egloff 2006 29 Java Programmierung mit Konzept von Java - ByteCode & Interpreter (2/3) Erstellung eines Java Programms 1) Mit Programmiersprache Java wird Quellcode erstellt. 2) Compiler übersetzt Quellcode in einen Zwischencode (binär und plattformunabhängig). 3) Der Interpreter (Java Virtual Machine - JVM) führt den Zwischencode auf der jeweiligen Plattform aus. (Der Interpreter selber ist wieder plattformabhängig) Der Bytecode kann auf jeder Plattform mit dem spezifischen Interpreter ausgeführt werden Mark Egloff 2006 30 Java Programmierung mit Konzept von Java - ByteCode & Interpreter (3/3) > Compiler Plattform abhängig javac > ByteCode Plattform unabhängig Plattform A prog.class > Interpreter Plattform abhängig java Plattform A Mark Egloff 2006 java Plattform B java Plattform C 31 Java Programmierung mit Konzept von Java – Vorteile / Nachteile (1/5) Vorteil: Plattformunabhängigkeit > write once, run everywhere > Konfiguration und Deployment wird wesentlich vereinfacht > Einfaches Release Management Nachteil: Geschwindigkeitsverlust, Ressourcenverbrauch > Der Bytecode wird vom Interpreter zur Laufzeit im Memory zu einem Programm umgewandelt 10 – 20 langsamer > Interpreter sind komplex und extrem speicherhungrig Not macht erfinderisch, was wird dagegen unternommen? Mark Egloff 2006 32 Java Programmierung mit Konzept von Java – Vorteile / Nachteile (2/5) Abhilfen: > „Just in Time“ Compiler (JIT) JIT Compiler übersetzt nur den Code der gerade gebraucht wird. Geschwindigkeit steigt dadurch um Faktor 3 - 5. Der JIT ist heute schon im Standard Interpreter integriert („Hotspot“) > Native Implementationen Gewisse Teile werden direkt in einer plattformabhängigen Sprache geschrieben z.B. C++ Eclipse / Netbeans setzen für das GUI eine C++ Version des Java Swings ein (SWT/GCJ) ww.eclipse.org/swt/ plattformunabhängigkeit ??? Mark Egloff 2006 33 Java Programmierung mit Konzept von Java – Vorteile / Nachteile (3/5) C++ vs. Java Performance (bigger is better): Der Java Interpreter wurde extrem „ge-tunet“, bei gewissen Algorithmen hat Java die Nase vorn Mark Egloff 2006 34 Java Programmierung mit Konzept von Java – Vorteile / Nachteile (4/5) C# vs. Java Performance (bigger is better): Java C# October 2004 www.shudo.net/jit/perf/ Mark Egloff 2006 35 Java Programmierung mit Konzept von Java – Vorteile / Nachteile (5/5) > Wofür ist Java nun nicht geeignet ? … wenn plattformspezifische Eigenschaften benötigt werden > Wenn Echtzeit gefragt ist muss dies unterstützt werden > Anzahl freier Bytes im Dateisystem, Laufwerkstyp erkennen, CD auswerfen, Datei Verknüpfungen folgen > Windows Desktop z.B. Applikationen mit einem Tray Icon ausstatten > Zugriff auf Hardware Schnittstellen z.B. USB oder Firewire … wenn Speicherverwaltung ein Problem darstellt > Speicherverbrauch lässt sich in Java nicht 100%ig kontrollieren > Java ist speicherhungrig Mark Egloff 2006 36 Java Programmierung mit Konzept von Java – Die Java Virtual Machine Aufgabe der JVM > Interpretation & Ausführung > Dynamisches Laden > Sicherheitsprüfungen JVM java interpreter Betriebssystem Hardware Mark Egloff 2006 37 Java Programmierung mit Konzept von Java – Die Java Virtual Machine Dynamisches Laden Java Applet Datei MyApplet.class 1 WWW-Browser 2 Datei Bluber.class 3 Library der JVM Internet HTTP- Server Server Client A 1) Der ByteCode für das Applet wird geladen und es wird gestartet. 2) Werden weitere Applikationsklassen gebraucht, so werden die vom Client über das Netz zur Laufzeit nachgeladen. 3) Werden Library Klassen benötigt, so werden diese von der lokalen Maschine geladen. Mark Egloff 2006 38 Java Programmierung mit Konzept von Java – Die Java Virtual Machine Sicherheitskonzept Java besitzt ein 4 stufiges Sicherheitskonzept > Unterste Ebene: die Programmiersprache selbst, durch Ausschluss von Zeigern und strenger Typenprüfung. > Zweite Ebene: Der geladene ByteCode wird überprüft. Schutz vor manipuliertem ByteCode. > Dritte Ebene: Der Class - Loader überprüft die Zugriffsrechte innerhalb des Javaprogramms > Vierte Ebene: Überwachungen zur Laufzeit Mark Egloff 2006 39 Java Programmierung mit Das Java Development Kit (JDK) > Wie verwende ich Java ? Mark Egloff 2006 40 Java Programmierung mit Das Java Development Kit (JDK) JDK = Java Development Kit (JSDK = Java Software Development Kit) > frei verfügbar > Bezugsquelle: http://java.sun.com > Das JDK ist in der JSE (Java Standard Edition) enthalten. > Aktuell ist JDK 1.5 Mark Egloff 2006 41 Java Programmierung mit Das Java Development Kit (JDK) Übersicht JDK (ab v1.3) > Konsolenapplikationen > Applets & GUI (AWT, Swing) > Netzwerk, TCP/IP (Sockets) > Komprimierung & Dynamisches Laden (Archive) > Laufzeit Untersuchungen (Reflection) > Sicherheit & Verschlüsselung (Security) > Datenbankanbindung (JDBC via ODBC, SQL) > Anbindung für Verteilte Systeme (Beans, RMI, IDL, Corba) Mark Egloff 2006 42 Java Programmierung mit Das Java Development Kit (JDK) Übersicht JDK 1.4 Ordner: Inhalt: bin Development Tools jre Java Runtime Environment lib Additional Libraries demo Demo Applets and Applications include C header Files Include-old Old Native Interface Headers docs Documentation src.jar/.zip Source Code Packages Mark Egloff 2006 43 Java Programmierung mit Übungen Heute > Installation JDK 1.4 > Kennen lernen des JDK 1.4, Demos > CSV XML HTML Transformation > „Hello World“ > Quadrat.java > Ein & Ausgabe Mark Egloff 2006 44 Java Programmierung mit Aufbau eines Java Programmes Beispiel einer „Hello World“ Applikation: public class HalloWelt Klasse { public static void main (String[] args) Methode { System.out.println("Hallo Welt"); Ausgabe } } Mark Egloff 2006 45 Java Programmierung mit Aufbau eines Java Programms Dateinamen und Klassennamen: public class HalloWelt { Klasse HalloWelt .java ... } Die erste Klasse muss mit dem Namen der Datei übereinstimmen (CaseSensitive !) Mark Egloff 2006 46 Java Programmierung mit Aufbau eines Java Programms Die „main“ Methode: public class HalloWelt { public static void main (String[] args) Methode { ... } } Der Syntax und Name der Hauptmethode „main“ ist fest vorgeschrieben Nur so ist gewährleistet, dass diese Methode beim Start automatisch vom System gefunden wird. Mark Egloff 2006 47 Java Programmierung mit Aufbau eines Java Programms Syntax der „main“ Methode: Element: Kategorie: Bedeutung: public Zugriffsschutz Kann von überall aufgerufen werden static Klassenmethode Methode wird nicht an ein Objekt / Instanz gebunden „Globale“ Methode void Rückgabetyp Die Methode liefert keinen Rückgabewert. main Methodenname Der Name „main“ bewirkt, dass diese Methode nach dem Programmstart aufgerufen wird. String[] args Übergabeparameter In diesem Parameter bekommt die Methode alle ev. eingegebenen Comandline Parameter Mark Egloff 2006 48 Java Programmierung mit Aufbau eines Java Programms Ausgabe der „Hello World“ Applikation: public class HalloWelt { public static void main (String[] args) { System.out.println("Hallo Welt"); } } Klasse als Namespace statisches Objekt Methode Übergabeparameter Es wird von einem static (=„globalen“) Objekt „System.out“ eine Methode „println()“ aufgerufen, „System.out“ ist die Standardausgabe des Prozesses Mark Egloff 2006 49 Java Programmierung mit Compilieren des Java Programms Aufruf des Java Compilers: Syntax: javac [FileName] Für die Compilierung wird das Programm „javac.exe“ benötigt. Als Parameter Filenamen (mit Endung) eingeben.Bei Windows muss der Aufruf nicht CaseSensitive sein Mark Egloff 2006 50 Java Programmierung mit Compilieren des Java Programms Datei HalloWelt.java public class HalloWelt Datei HalloWelt.class javac ------------------------------ Datei MyClass.class class MyClass ------------------------------ Für Jede Klasse erzeugt der Compiler ein eigenes *.class File. Mark Egloff 2006 51 Java Programmierung mit Ausführen des Java Programms Aufruf des Java Interpreters: Syntax: java [ClassName] Für die Ausführung wird das Programm „java.exe“ benötigt. Klassennamen (CaseSensitive!) als Parameter angeben (ohne *.class!) Mark Egloff 2006 52 Java Programmierung mit Compilieren des Java Programms Häufige „Beginnerfehler“ beim Kompilieren: > Befehl „javac“ nicht gefunden, „PATH“ nicht gesetzt D:\> javac hallowelt.java Der Befehl "javac" ist entweder falsch geschrieben oder konnte nicht gefunden werden. > Dateiendung ist nicht „*.java“ D:\> javac hallowelt.txt hallowelt.txt is an invalid option or argument. > Dateinamen ungleich Klassennamen: D:\> javac hallowelt_übung1.java class HalloWelt is public, should be declared in a file named HalloWelt.java Mark Egloff 2006 53 Java Programmierung mit Ausführen des Java Programms Häufige „Beginnerfehler“ beim Ausführen: > Dateiname anstelle Klassennamen D:\> java HalloWelt.class Exception in thread "main" java.lang.NoClassDefFoundError: helloworld/class > „main“ Methode hat falscher Syntax oder fehlt Exception in thread "main" java.lang.NoSuchMethodError: main > „CLASSPATH“ Variable existiert, aber kein „.“ D:\> java HalloWelt Exception in thread "main" java.lang.NoClassDefFoundError: HalloWelt D:\>echo %CLASSPATH% aaaa.jar;bbbb.jar;cccc.jar;dir1;dddd.jar;dir2 Mark Egloff 2006 54 Java Programmierung mit Konzept von Java > Was ist der „CLASSPATH“ ? Mark Egloff 2006 55 Java Programmierung mit Der CLASSPATH Standardmässig kennt Java nur Klassen aus dem JRE (Java Runtime Environment) z.B. „C:\jdk1.5.0_06\jre\lib\rt.jar“ Bei der Kompilierung oder Ausführung eines Programms werden alle anderen Klassen nach einer bestimmten Vorgehensweise gesucht. Dabei wird der so genannte „CLASSPATH“ verwendet. 1. Suche in “rt.jar” (Bootstrap classes) 2. Suche in „jre\lib\ext“ (Extension classes) 3. Suche in CLASSPATH (own/third parties) Mark Egloff 2006 56 Java Programmierung mit Der CLASSPATH Wird eine Klasse nicht gefunden so wird eine entsprechende Exception (Fehler) ausgelöst z.B. D:\uebung1>java HelloWorld Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld Mark Egloff 2006 57 Java Programmierung mit Der CLASSPATH Der CLASSPATH ist eine Pfadangabe (Textzeile) und besteht aus Angaben von Libraries (*.jar) oder Verzeichnissen. Durch „ ; “ getrennt. Bei der Suche wird jeder Eintrag von vorne nach hinten abgearbeitet um die Klasse zu finden z.B. CLASSPATH = java\myclasses; lib\xalan.jar;lib\xercesImpl.jar;. Einträge sind oft relativ. Der „ . “ bedeutet das aktuelle Verzeichnis! Mark Egloff 2006 58 Java Programmierung mit Der CLASSPATH Falls kein Wert für den CLASSPATH angegeben wurde so ist es das aktuelle Verzeichnis „ . “ Der CLASSPATH kann entweder als Systemvariable oder als Parameter angegeben werden. Parameter sollte bevorzugt werden um Kollisionen mit anderen Java Programmen zu vermeiden. z.B. SET CLASSPATH=java\myclasses;. java MyAppClass javac –classpath java\myclasses;. MyApp.java java –classpath java\myclasses;. MyAppClass Mark Egloff 2006 59 Java Programmierung mit Der CLASSPATH Crash Course – System Variablen in Windows Shell: > Variable für die jeweilige Shell setzen (kein abstand bei „=“) D:\> set CLASSPATH=wert > Variable ausgeben oder testen ob gesetzt D:\>echo %CLASSPATH% wert %CLASSPATH% > Variable gesetzt Variable nicht vorhanden Variable löschen D:\> SET CLASSPATH= Für diesen Kurs empfehle ich die Variable nicht zu verwenden und falls vorhanden in der Systemsteuerung zu löschen!! Mark Egloff 2006 60 Java Programmierung mit Der CLASSPATH Bekannte Probleme beim CLASSPATH bzw. Java Einträge (Datei, Verzeichnis) werden nicht auf Ihre Existenz bei der Suche geprüft. Schreibfehler im CLASSPATH können deshalb FATAL sein! Java kennt keine interne Versionierung bei Klassen, sollte eine Klasse (= gleicher Name) mehrfach im CLASSPATH existieren so wird die erste genommen! FATAL bei verschiedenen Versionen! Java kommt seit 1.4 mit eingebauten Third Party Libraries (Endorsed) z.B. „Xalan“. Das führt oft zu Versionskonflikten! Mark Egloff 2006 61