Pakete Import < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 22:44 Fr 17.08.2007 | Autor: | Fuchsschwanz |
hallo!
Ich und Java mal wieder..vielen dank für die Antworten im anderen Thread...
habe ein Problem beim importieren von Paketen (selbst erstellt, nicht aus der Klassenbibliothek), bei diesen bekomme ich immer die Meldung, dass jenes Paket nicht existiert...wo könnte mein Fehler liegen ? Verwende jdk 1.3.1
Dankeschön!!!
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:22 Fr 17.08.2007 | Autor: | Mumrel |
Hi Fuchsschwanz,
die genaue Fehlermeldung wäre hilfreich. Benutzt du eine Entwicklungsumgebung oder arbietest du auf der Konsole und mit Texteditor?
Aber ich vermute es liegt daran, dass die VM die von dir erstellten Klassen nicht finden kann.
Wenn sie nicht im selben Verzeichnis liegen, musst du über -cp <PFAD> angeben, wo die .class Dateien liegen. Ansonsten, falls du die Soure-Dateien verwenden willst über -sourcepath.
|
|
|
|
|
Hi!
Also ich bekomme gemeldet: [mm] C:\vfh\prog1\GanzzahlDivisionMit.java:1: [/mm] package vfh.prog1.bib does not exist
import vfh.prog1.bib.Konsole;
dabei ist meine Datei GanzzahlDivisonMit im Verzeichnis [mm] c:\vfh\prog1\Dateiname [/mm] abgespeichert, die zu importierende Datei liegt in [mm] C:\vfh\prog1\bib...
[/mm]
Hier noch zusätzlich mein Quelltext:
mport vfh.prog1.bib.Konsole;
/**
* GanzzahlDivisionMit.java
* Einfaches Programm fuer das Auffangen und
* Behandeln von Ausnahmen
* @author Goerlitz
* @version 2.0, 10/2001
*/
public class GanzzahlDivisionMit {
public static void main(String[] args) {
int ganz1, ganz2;
System.out.println("Ausnahmebehandlung am Beispiel der [mm] Division\n");
[/mm]
try {
System.out.print("1. ganze Zahl: ");
ganz1 = Konsole.getInputInt();
[mm] System.out.print("\n2. [/mm] ganze Zahl: ");
ganz2 = Konsole.getInputInt();
[mm] System.out.println("\nErgebnis [/mm] der Division: " + ganz1 / ganz2);
}
catch (NumberFormatException e) {
System.out.println("Das war keine korrekte ganze Zahl");
}
catch (ArithmeticException e) {
System.out.println("Die 2. Zahl ist 0.");
System.out.println("Division durch 0 ist nicht ausfuehrbar!");
}
finally {
System.out.println("Anweisungen im finally-Block werden immer ausgefuehrt.");
}
} // main
} // class GanzzahlDivisionMit
Bin über Hilfe dankbar
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:59 Sa 18.08.2007 | Autor: | Mumrel |
Hi fuchs,
< GanzzahlDivisonMit in c:\vfh\prog1\Dateiname
< die zu importierende Datei liegt in C:\vfh\prog1\bib...
Möglichkeite A:
1) In C:\vfh\prog1\bib...
javac DeineLib.java
2) In c:\vfh\prog1\Dateiname
javac -cp C:\vfh\prog1\bib... GanzDIvMit.java
Möglickeit B:
In c:\vfh\prog1\Dateiname
javac -sourcepath C:\vfh\prog1\bib... GanzDIvMit.java
Ausführen:
In c:\vfh\prog1\Dateiname
java -cp C:\vfh\prog1\bib... GanzMit.class
Falls das nicht funkt, pack das doch mal alles und stelle es online, sofern du den Code teilen möchtest. Dann könnte ich es hier auch geschwind probieren.
Grüße Mumrel
|
|
|
|
|
Hi du!
So ich nutz dein Angebot jetz mal schamlos aus, da ich mittlerweile andere Fehlermeldungen kriege...vllt findest du ja den Fehler...
GanzzahlDivisionMit.java
Konsole.java
Dateianhänge: Anhang Nr. 1 (Typ: zip) [nicht öffentlich] Anhang Nr. 2 (Typ: zip) [nicht öffentlich]
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 18:47 So 19.08.2007 | Autor: | Mumrel |
Hi Fuchs,
ok, also ich habe jetzt eine lauffähige Version, die mir zwar sagt 3*1 = 0, aber hey sie läfut :).
Entpacke das Archiv irgendwohin. Hinter der Main war noch ein ";" das da nicht hingehörte, das war wahrscheinlich der zweite Fehler.
Entpacke das wohin du magst, sagen wir mal nach X.
Mit der Konsole nach X wecheseln und mit
javac GanzzahlDivisionMit.java kompilieren.
und mit
java GanzzahlDivisionMit ausführen.
Das Poblem war, dass wann immer man packages benutzt, diese in einer gleichartigen Ordnerhierachie ablegen muss.
Jeder . kann als \ bzw. / gedacht werden, daher hat er die Konoolenklasse nicht gefuden, da (vermutlich) die Verzeichnisse für die Packages nicht angelegt waren.
Viel Spaß und
Grüße Mumrel
Dateianhänge: Anhang Nr. 1 (Typ: zip) [nicht öffentlich]
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:59 Mo 20.08.2007 | Autor: | Mumrel |
Hi Fuchs,
betrachten wir mal das Ausführen, beim Kompilieren ist es denke ich ähnlich.
Gegeben ist die Ordnerhierarchie wie aus dem Zip File also
1: | [mm]\wurzel{2}
| 2: | +c:\java
| 3: | +Ganzzahl.class
| 4: | +vfh
| 5: | +prog1
| 6: | +bib
| 7: | +Konsole.class
| 8: | [/mm]
|
Wenn du in Java die VM startest mit
java Ganzzahl, dann wird das aktuelle Verzeichnis automatisch zum "Classpath" hinzugefügt.
Was ist der Classpath?
Der Classpath "Klassenpfad" ist einfach ein Verziechnis (bzw. mehrere) an denen die VM nach den Klassen sucht, die verschiedene Programme benutzen (denke an String, IOStreams etc).
Irgenwo müssen die ja auch liegen und der Classpath gibt genau an wo.
Nehmen wir also an der Classpath enthält nur [mm]"c:\Java"[/mm] und sonst nichts (nie wirkich so aber mal kurz angenommen).
Wenn du in Ganzzahl das Die Klasse A.B.CKlasse aus dem Package A.B benutzt, so sucht die VM automatisch in
[mm]C:\Java\A\B[/mm] ndach CKlasse.class und nirgendwo anderst.
Das bietet sich einfach an um neben der logischen Ordnung die Packages in deinen Programmen schaffen, auch fürs Dateisystem zu übernehmen.
Aber dass heißt für dich. Wenn du ein package anlegt must du auch ein Ordner anlegen. Das ist also aneinander gekoppelt.
Wo der ganze Kram liegt ist aber egal, da man über den Parameter java -cp angeben kann, von wo aus geuscht werden soll.
So ich hoffe das war verständlich :)
Grüße Mumrel
|
|
|
|