Die Java-Funktionsbibliothek wird ihren Classpath-Eintrag sehr wahrscheinlich bei der Installation der JVM mit erhalten, so dass der Compiler bei Klassen aus der Java-API darüber informiert ist, wo er suchen muss, ohne dass du das noch manuell angeben müsstest. Ist erstens sinnvoll und zweitens wäre etwas wie "Program Files.Java" etc. anzugeben nicht besonders plattformunabhängig
In der Manpage hier unter Linux steht dazu folgendes:
The Java runtime searches for the startup class, and other classes
used, in three sets of locations: the bootstrap class path, the
installed extensions, and the user class path.
Edit:
Hab grad mal nachgeschaut und meine mich zu erinnern, dass diese ganzen Standard-API-Sachen in rt.jar liegen. Die ist bei mir in /usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib, also wird da auch ein Classpath der JVM hinführen.
Eine Klasse besteht aus einem Klassennamen und einem Packagenamen. Der Packagename ist ein Namespace um die Klassen zu organisieren und eindeutig zu identifizieren.
z.B.
Code:
java.lang.String
Packagename: java.lang
Klassenname: String
Das heisst die Datei
Code:
String.class
muss im Verzeichnis
Code:
java/lang
liegen, entweder im Filesystem oder in einer Jar-Datei. Im Classpath muss man die Unterverzeichnise nicht angeben. Es reicht das Rootverzeichnis anzugeben. Von dort sucht Java im Unterverzeichnis java/lang die Datei String.class
Wenn deine Klassen kein Packagename definieren muss die .java/.class im Rootverzeichnis liegen
Nein, die src.zip ist der Source Code. Wie bereits mehrfach beschrieben ist es die rt.jar in /lib/.
Ich hab mal gehört, das man keine *.class Files benutzen sollte. Dazu gibt es *.jar (Java .class Dateien Archive).
Du brauchst auch nicht die *.java Datei, denn das ist nur der Source Code. Die JVM braucht wenn denn nur den Bytecode (*.class), aber wie gesagt, die sollten immer in Packages in jar-archiven verpackt sein ...
Nein, die src.zip ist der Source Code. Wie bereits mehrfach beschrieben ist es die rt.jar in /lib/.
Ich hab mal gehört, das man keine *.class Files benutzen sollte. Dazu gibt es *.jar (Java .class Dateien Archive).
Du brauchst auch nicht die *.java Datei, denn das ist nur der Source Code. Die JVM braucht wenn denn nur den Bytecode (*.class), aber wie gesagt, die sollten immer in Packages in jar-archiven verpackt sein ...
Jede *.class Datei sollte in einem Package sein. Ob gepackt oder nicht.
Immer die erste Zeile in einer Datei sollte "package xxx.xxx..." sein. Ansonsten ist spricht man vom "default package". Dann kann diese Datei aber nicht importiert werden.
Deshalb sollte man dieses auch nicht nutzen.
Das Package kannst du dir selbst aussuchen.
Ich hab gelernt das es so aufgebaut sein sollte:
TAG.ENTWICKLER.PROGRAMMNAME
So weit ich weiß;
Wenn dein Package z.B. "org.javaneuling.coolesProgramm" ist, dann brauchst du folgende Ordnerstruktur:
Einen Ordner org, darin dann ein Ordner "javaneuling" und darin dann der Ordner "coolesProgramm", dann die *.class Datei, die genauso heißt, wie die Klasse, die in der Datei enthalten ist.
Die Datei, die die andere Datei dann importieren soll, in das selbe Verzeichnis wie der Ordner "org".
In dieser Datei dann "import org.javaneuling.coolesProgramm.KLASSENAME".