Klassenpfad inkorrekt

MaxWause

Neues Mitglied
Hallo Zusammen,

Ich habe folgende Aufgabe:
Ich soll ein Programm über die Windows Eingabeaufforderung kompilieren. Das Programm importiert Klassen, welche in folgender Ordnerstruktur zu finden sind:
C:\Users\name\de\vfh\gp1\bib\clockman

Das Programm selbst befindet sich in:
C:\Users\name\de\vfh\gp1\ejp

Nun wurde bei der Einrichtung vorgegeben, dass man als CLASSPATH „ .;C: “ angeben solle, damit der Compiler automatisch alle benötigten Klassen findet und man in der Eingabeaufforderung nicht extra den classpath angeben muss.

Leider bekomme Ich trotzdem den Fehler, dass die Klassen nicht gefunden werden.

Ich bin für jegliche Hilfe dankbar.

Liebe Grüße

Max
 

mihe7

Top Contributor
Nun wurde bei der Einrichtung vorgegeben, dass man als CLASSPATH „ .;C: “ angeben solle, damit der Compiler automatisch alle benötigten Klassen findet und man in der Eingabeaufforderung nicht extra den classpath angeben muss.
Du musst schon den ganzen Pfad (bzw. die ganzen Pfade) angeben und nicht nur ";C:"

Ist das eine Hausaufgabe? Falls nicht: Finger weg von den Umgebungsvariablen.
 

MaxWause

Neues Mitglied
Danke erstmal für die Antworten.

Tatsächlich handelt es sich um eine Übungsaufgabe im Studium. Umso interessanter, dass es wie oben beschrieben nicht machbar zu sein scheint.

Muss Ich den Klassenpfad in den Umgebungsvariablen wieder ändern damit es mit dem -classpath in der Eingabeaufforderung klappt und wenn ja zu was? Soweit Ich weiß wird der ja nicht bei der Installation von Java angelegt.

Meine Idee als Eingabe in der Eingabeaufforderung wäre nun:

javac -classpath C:\Users\name\de\vfh\gp1\bib\clockman UebClockman.java

UebClockman.java ist der Name des zu kompilierenden Programm.

Muss ich mich dazu nun im Verzeichnis befinden wo sich das Programm befindet oder gebe Ich den Pfad quasi wieder an?
 
K

kneitzel

Gast
Bei dem Aufruf von Dir bist Du im Verzeichnis von UebClockman.java so dies kein Package enthält.

Du hast bei Projekten immer ein Source Verzeichnis, in dem die Sourcen liegen. Und wenn Du eine Klasse Test hast, die im Package de.kneitzel.javaforum liegt, dann hast Du im Source Verzeichnis die Ordnerstruktur de/kneitzel/javaforum/ und in dem Ordner javaforum würde die Datei liegen.
Dann hast Du ein target Verzeichnis. So du nichts angibst, ist es dann auch das Source Verzeichnis.

Beim Kompilieren der Klasse de.kneitzel.javaforum.Test (Test.java aus dem Ordner de/kneitzel/javaforum) wird dann die Datei de/kneitzel/javaforum/Test.class erzeugt.

Du wärst beim Aufruf also im Source Verzeichnis. Bei einem dir Befehl würdest Du also den Ordner de sehen.
Und der Aufruf in diesem Ordner wäre dann erst einmal javac de\kneitzel\javaforum\Test.java.

Und dann kannst Du den Classpath mit angeben. Das ist wichtig um Anhängigkeiten anzugeben. Die Angaben können absolut sein (Da ist es dann auch egal, wo du stehst) oder relativ (also aus dem aktuellen Verzeichnis heraus gesehen).

So die Ordnerstruktur innerhalb vfh immer gleich ist, könntest Du also auch -classpath ..\bib\clockman sagen.
Das wäre z.B. interessant, wenn Du den Befehl zum Übersetzen nicht immer neu angeben willst sondern ihn in eine build.bat schreiben würdest. Dann kannst Du den Ordner vfh umbenennen, verschieben, was auch immer ohne dass Du an der Datei etwas verändern müsstest. (Das kann wichtig sein, wenn mehrere Leute an etwas arbeiten und die Dateien sozusagen "kopiert" werden.

==> Was Du hier also siehst sind schon ein paar weitergehende Ansätze, die interessant werden. Zum einen ein Build Tool (Hier noch ein einfaches Batchfile, aber später kann das ant, gradle, maven, .... sein) und zum anderen dieses "kopieren von Dateien" was dann der Ansatz einer Versionsverwaltung ist (z.B. git um ein weit verbreitetes Tool zu nennen), die zwar deutlich mehr macht aber eine Hauptaufgabe ist es, dass mehrere Entwickler den aktuellen Entwicklungsstand haben....
 

mihe7

Top Contributor
Muss Ich den Klassenpfad in den Umgebungsvariablen wieder ändern damit es mit dem -classpath in der Eingabeaufforderung klappt und wenn ja zu was? Soweit Ich weiß wird der ja nicht bei der Installation von Java angelegt.
Sollte IMO nicht notwendig sein, aber wenn Du den CLASSPATH-Umgebungsvariable per set eingestellt hast, einfach set CLASSPATH= eintippen.

Ich muss dazu sagen, dass ich mich von CLASSPATH irritieren habe lassen. Das steht nämlich nichts von Umgebungsvariable :)

Umso interessanter, dass es wie oben beschrieben nicht machbar zu sein scheint.
Nein, der Classpath gibt die unmittelbaren Orte an, an denen nach Klassen gesucht gesucht werden soll. Das können beispielsweise Ordner oder Jar-Files sein. Pakete sind relativ zum Classpath zu verstehen.

Aber schau Dir einfach die Antwort von @kneitzel an, da steht eigentlich alles drin.
 

Trjavnamen

Bekanntes Mitglied
Wenn man mit Eclipse programmiert kann man Sourcenfolder temporär für das Javaprojekt einpflegen. Einfach mal auf das Projekt mit der maus und die rechte Maustaste drücken. Im Auswahlmenue auf Propperties wo alle Einstellungen für das Projekt erstellt werden kann. unter dem Punkt JavaBuildPaht sieht man die installierten KlassenPfade hier kann man die anderen benötigten klasse einfplegen
en12322
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben