bin ein Neueinsteiger und habe folgendes Problem:
Hierbei muss ich erwähnen, dass ich mit der Entwicklungsumgebung "KAWA"
arbeite.
In meinem Programm greife ich auf verschiedene Pakete zu z. B. import
java.awt.*;
import java.io.*; als auch eines welches nicht im Standard zu finden ist.
Das Programm lässt sich compilieren und bringt bei der Ausführung auch das
gewünschte Ergebnis (unter KAWA).
Allerdins möchte ich, dass das Programm durch eine batch-Datei aufgerufen
werden kann.
In der Autoexec.bat habe ich auf c:\jdk1.3\bin verwiesen, so dass die
java.exe gefunden werden müsste.
Gebe ich dann "java hallo" ein /*Datei heißt z.B. hallo.class*/ erscheint
folgende Zeile unter dos.
C:\>java hallo ~1
Exception in thread "main" java.lang.NoClassDefFoundError: hallo (wrong
name: Ha
llo)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
C:\>
Ich denke, dass das Hauptproblem in den Programmpaketen liegt, die im KAWA
zwar definiert, allerdings ansonsten nicht bekannt sind.
Die classen, welche sich in den Paketen befinden, bzw. die Pakete als
solches kann ich auch nirgends finden.
Bei den von mir benutzten nicht standardclassen, konnte ich im KAWA add Java
unter packages ausführen, und alle .java-files die im Header "package
blablabla.bla" stehen hatten wurden im Paket blablalba.bla definiert.
Ist das mit den anderen Paketen, z.B. java.awt usw. auch der Fall?
Und wo kann ich die finden? (evtl. irgendein jar-file?)
Wie kann ich die alle mit meinem Programm in Verbindung bringen, wenn es
nicht unter KAWA laufen soll?
MfG
Markus
gruß grischan
versuch es mal mit:
cd Laufwerk:\in diesem Verzeichnis befinden sich die hallo klassen
java hallo
Gruß Walter
/*wie steht es denn mit dem Zeichen "~", das erscheint immer unter DOS?
C:\>java Hallo
Exception in thread "main" java.lang.NoClassDefFoundError:
com/lowagie/text/DocumentException
/*dies ist das eine Paket, vielleicht findet er die anderen ja tatsächlich,
oder muss man ihm die irgendwie mitteilen, z.B. das java.awt.*; */
gruss
markus
Das Problem liegt hier wohl darin, dass deine Klasse
in Wirklichkeit "Hallo" heißt (ist auch besser so,
Klassen sollten großgeschrieben werden).
Dass die Class-Datei "hallo.class" heißt,
liegt
a) an einem Fehler des Compilers
b) an einem Dateisystem, welches nur Kleinbuchstaben
unterstützt
c) an einer manuellen oder automatischen (KAWA)
Umbenennung der Datei.
Im Fall b) kann man wenig machen (außer wirklich
nur Klassennamen mit Kleinbuchstaben zu verwenden),
bei a) und c) solltest du versuchen, die Datei
einfach so mal umzubenennen (nach "Hallo.class").
Auf Dauer ist dies zwar keine Lösung, aber es
hilft zumindest kurzfristig.
Paul
C:\PDF>java hallo
Exception in thread "main" java.lang.NoClassDefFoundError:
com/lowagie/text/DocumentException
Es scheint zumindest nur noch an dem Zusatzpaket zu liegen.
Ursprünglich besteht dieses aus mehrern *.java Dateien.
Wie kann ich ihm die so verständlich machen (mit geben)???
Und falls dies klappen sollte,
Wie verfahre ich auf einem nicht mit Java "vorbelasteten Rechner", auf dem
meine Anwendung laufen soll,
spätesten dann hab ich ja das Problem, dass auch die anderen Pakete
mitgegeben werden müssen.
Hoffnungsvoll
markus
> versuch es mal mit:
> cd Laufwerk:\in diesem Verzeichnis befinden sich die hallo klassen
es gibt nur eine Klasse, bei mir unter c:\blabla\hallo.class,
ich such die Pakete, in denen die jdk Klassen enthalten sind;
und eine Möglichkeit ein Paket, welches nicht im Standard ist ausserhalb
einer Entwicklungsumgebung als solches zu definieren und anzusprechen, damt
mein import blabla.blaba auch funktioniert.
MfG
Markus
Frage: Wie verfahre ich auf einem anderen Rechner mit den java.awt.* usw.
Und wo sind die?
MfG
Markus
Die Standard-Java Klassen sind in rt.jar
(früher classes.zip) - und sollten bei jedem
JRE da sein. Diese musst du also nicht
mitgeben.
Paul
Wenn das von ganz alleine immer erscheint, dann solltest du mal dran denken
ein paar Geisterjäger zu ordern :-) Das hast du doch garantiert mit
eingegeben, oder?
> C:\>java Hallo
> Exception in thread "main" java.lang.NoClassDefFoundError:
> com/lowagie/text/DocumentException
>
> /*dies ist das eine Paket, vielleicht findet er die anderen ja
tatsächlich,
> oder muss man ihm die irgendwie mitteilen, z.B. das java.awt.*; */
Hier erscheint "es" dann ja auch schon nicht mehr :-)
Wenn du jetzt noch ein
"java -cp .;C:\PfadZurBibliothek\Bibliothek.jar Hallo"
daraus machst sollte es funktionieren. Als Bibliothek musst du explizit nur
solche angeben, die nicht im JDK enthalten sind, also in deinem Falle also
nur das "iText.jar".
Nico