die liebe kommandozeile...

savage

savage

DAU
kennt sich jemand hier mit compilieren von java-quelltext in der komandozeile aus?
ich bekomme da naemlich immer eine exception
...wenn ich die datei ausfuehren will... und das selbst bei einem einfachen programm
wie hallo welt:

der quelltext:
/* test

*/
public class Example {
public static void main(String args[]) {
System.out.println("Blablabla") ;
}
}

das resultat:

[playground]$ javac Example.java
[playground]$ java Example.class
Exception in thread "main" java.lang.NoClassDefFoundError: Example/class
[playground]$

mach ich da was falsch? hab ich was vergessen oder ist bei meinem compiler oder interpreter was futsch?

gruessle...
 
Moin,

savage schrieb:
das resultat:

[playground]$ javac Example.java
[playground]$ java Example.class

Code:
java Example
muss es heißen, und schon müllt er dir das Ergebnis auf die Konsole.
Der Parameter für java ist der Name der Klasse, nicht die Datei. Es kann auch ne .jar, .zip, oder irgendwas übers Netz sein. Java hat ne Menge solche Quellen wo es seine Klassen sucht.

Was du mit
Code:
java Example.class
machst ist im Prinzip folgendes (java legt Packages in Ordner ab und trennt die mit einem Punkt): du sagst "such das Package 'Example' und lade mir dort die Klasse 'class', also sucht er den Ordner Example und dort eine Datei namens class. Ergo mault er rum dass er 'Example/class' nicht findet 8)
 
Zuletzt bearbeitet:
Mach das am besten per Eclipse, da kannst du den Code direkt aufsühren.

MFG

Dennis
 
danke fuer die hilfe... aber leider hab ich jetzt erst mal den auftrag die ganze sache
in der konsole zu machen... :rtfm: ... lerneffekt und so...


@monarch:
leider geht es mit java Example auch nicht...

[playground]$ java Example
Exception in thread "main" java.lang.NoClassDefFoundError: Example
[playground]$

aber ich hab rausbekommen, we es geht...

[playground]$ java -classpath . Example
Blablabla
[playground]$

hat mir einer der hiesigen gurus zugefluestert :oldman ... und als hausaufgabe muss ich nun rausfinden, warum es funzt... :think:

gruessle
 
weil als klassenpfad immer der aktuelle pfad mit angeben sein muss. warum das so ist weiss ich auch nicht, aber ich weiss, dass du dir den parameter sparst, wenn du in deiner ~/.bashrc die umgebunsvariable CLASSPATH setzt ala:
Code:
CLASSPATH=.:/usr/java/jdk/src.zip:/usr/java/jdk/libs/;
 
und weiter gehts...

ja und jetzt soll ich die ganze sache mit jar und so weiter machen...
jar creieren ist nicht das problem, aber aus nem jar starten...
ich bekomm da immer ne bloede meldung...

[playground]$ java -jar EX.jar
Failed to load Main-Class manifest attribute from
EX.jar
[playground]$ java -jar EXM.jar
Exception in thread "main" java.io.IOException: invalid header field
at java.util.jar.Attributes.read(Attributes.java:387)
at java.util.jar.Manifest.read(Manifest.java:167)
at java.util.jar.Manifest.<init>(Manifest.java:52)
at java.util.jar.JarFile.getManifest(JarFile.java:158)
[playground]$

wenn ich den classpath angebe mecker das teil genauso rum...
wobei EXM das jar mit einem manifest ist:

Main-Class:Example

...gespeichert in der datei namens exmain.mf
und das jar machen:

[playground]$ jar cvf EX.jar Example.class
[playground]$ jar cvmf exmain.mf EXM.jar Example.class

gibt es da irgendeine bloede kleinigkeit, die ich nicht beachtet oder uebersehen hab?
:hilfe2:

gruessle...
 
habt ihr das schonmal so gesehen:

java -classpath EX.jar Example ????

so ganz ohne manifest-file und so?

der ansatz wurde mir gerade von einem der hiessigen programmierer
angeboten.. und es funzt...

gruessle...
 
Jau, das heißt dass du java "von außen" sagst: in der Datei EX.jar gibts die Klasse Example.

Mit Manifest usw. weiß das .jar sozusagen selbst wo es starten kann.
 
und das beste ist, dass ich dahinter sogar eine logik erkennen kann...
ich bin verbluefft - ich glaube das hab ich gerafft... ( das macht mir fast schon angst.... 8o )

gruessle... (...aus dem sonnenstaat)
 

Ähnliche Themen

"non blocking console input" wieder rückgängig machen?

Input == String => false

Java 1.3 ORO Regex Problem

Startproblem

Problem bei Berechnung

Zurück
Oben