Hi,
ich bin noch ein Anfänger. Habe jetzt das erste Mal ohne Eclipse versucht ein eigenes Package zu importieren.
Das klappt aber nicht.Ich habe das auch schon gegoogelt und bin mir sicher nur irgendeine Kleinigkeit zu übersehen.
Ich denke ich habe entweder den CLASSPATH falsch gesetzt oder ich spreche das Packet falsch an.
Ich habe das Packet Test im Ordner C:\Programe Files\Java\jdk1.6.0.23\jre\lib\ext.
Es enthält eine .jar Datei Gruesse. Diese enthält nur eine einzige gleichnamige Klasse.
Beim CLASSPATH habe ich diese drei Varianten getestet:
.;C:\Programe Files\Java\jdk1.6.0.23\jre\lib\ext;
.;C:\Programe Files\Java\jdk1.6.0.23\jre\lib\ext\Test;
.;C:\Programe Files\Java\jdk1.6.0.23\jre\lib\ext\Test\Gruesse.jar;
Java:
packageTest;publicclassGruesse{publicvoidwieso(){System.out.println("geht das nicht?");}}
Java:
importTest.*;//falsch?classPackTest{publicstaticvoidmain(String[]args){Gruesse a =newGruesse();
a.wieso();}}
Ist jetzt der CLASSPATH falsch, die import-Anweisung, liegen die Dateien am falschen Ort oder alles drei?
welche Befehle tippst du ein mit welchen Fehlermeldungen?,
denkst du daran nach ClassPath-Änderungen eine neue Konsole zu öffnen oder gleich neuzustarten?
was liefert ECHO %CLASSPATH% ?
die dritte Variante ist am ehesten richtig, packe das Jar aber lieber nach c:/temp/ oder ähnlich kurzes,
um Tippfehler, Probleme mit Leerzeichen, geschützte Verzeichnisse und ähnliches zum umgehen,
das letzte Semikolon kann vielleicht weg,
wie genau sieht das Jar aus, hochladen (an Post anhängen, evtl. nur mit Anmeldung) lohnt sich
In der Java-Installation hat Dein Code nichts zu suchen. Du machst irgendwo einen Projekt-Ordner. Dort hast Du dann folgende Struktur Deiner Quelldateien:
Code:
projektordner/PackTest
projektordner/test/Gruesse
Dann korrigierst Du noch folgende Sachen in Deinem Quellcode:
- Packagenamen bitte klein
- Die Klasse PackTest muss public sein
Dann kompilierst Du beide Dateien mit Hilfe von javac. Beim Kompilieren von PackTest musst Du Gruesse dem Classpath hinzufügen. Ergebnis sind zwei class-Dateien.
Dann rufst Du mit java PackTest auf. Auch hier musst Du Gruesse dem Classpath hinzufügen.
Habe jetzt folgendes gemacht:
-packagename geändert und PackTest public
-Projekt nach C:\temp\ verschoben
-CLASSPATH C:\temp\test\Gruesse.jar hinzugefügt
-neu gestartet
Die Projektstruktur stimmt auch.
ECHO %CLASSPATH% zeigt .;C:\temp\test\Gruesse.jar;
wenn ich javac -classpath C:\temp\test\Gruesse.jar PackTest.java
erhalte ich als Fehler: package test does not exist
wenn ich javac PackTest.java nehme
(müsste doch auch funktionieren, wenn die CLASSPATH Variable stimmt, oder?)
erhalte ich jetzt diese Fehler: package test does not exist
und cannot acces Gruesse
bad class file: Gruesse.classGruesse.class)
class file contains wrong class: Test.Gruesse
Please remove or make sure it appears in the correct subdirectory of the classpath
Habe ich nicht schon eine richtige Ordnung? Und Gruesse ist public.
Ich habe jetzt den JavaEditor benutzt und mit diesem auch die .jar erstellt.
wieso es da Unterschiede in den Aufrufen geht kann ich nicht klar nachvollziehen,
'bad class file' usw. schon gar nicht, bei mir funktioniert es entweder nicht oder es klappt
evtl. liegt es daran dass Gruesse.class noch irgendwo im Bereich (falsch) als class-File herumliegt und mitmischt,
mit "javac -classpath C:\temp\test\Gruesse.jar PackTest.java " verzichtest du im Gegensatz zur ClassPath-Variablen auf den Punkt fürs aktuelle Verzeichnis
> class file contains wrong class: Test.Gruesse
hast du den Verzeichnisnamen geändert, aber das package in Gruesse.java nicht??
-----
vielleicht hast du ein schlechtes Jar, da du kaum hochladen kannst habe ich mal eins erstellt (mit Eclipse), versuche es damit,
die Klasse muss auch im Jar im passenden Unterverzeichnis stecken,
dass das Jar bei dir im test-Unterverzeichnis liegt läßt schlimmes vermuten