Hallo,
nachdem ich meine Java-Gehversuche bislang immer in NetBeans kompiliert und ausgeführt hatte, wollte ich mal probieren, in NetBeans erstellten Code im Terminal (Mac OS 10.6) zu starten.
Dafür habe ich ganz von vorne angefangen und in Netbeans ein HelloWorld Projekt (name "Hello")geschrieben, wo der ganze code (natürlich) in einem File Main.java steht. Die von NetBeans erzeugte binary-Datei heißt natürlich Main.class - so weit so gut.
Versuch 1:
- im Terminal mit cd in das Verzeichnis wechseln, in dem die Datei Main.class liegt OKAY
- java Main ausführen GEHT NICHT
Die Fehlermeldung beginnt so:
Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: hello/Main)
Versuch 2:
- ins Verzeichnis gewechselt, wo Main.java liegt OKAY
- mit javac Main.java kompiliert OKAY (in dem Verzeichnis liegt jetzt eine Main.class)
- java Main ausführen geht nicht, selbe Fehlermeldung wie bei Versuch 1.
Versuch 3:
- In der Datei Main.java die Zeile
auskommentiert.
- javac Main.java OKAY
- java Main OKAY, das Programm wird ausgeführt.
Zuletzt habe ich dem NetBeans Projekt noch ein File mit der Klasse SayHello mit einer statischen Methode hinzugefügt, die dann in der main-methode aufgerufen wird.
Jetzt geht noch nicht mal mehr das compilieren mit javac, Fehlermedlung beginnt so:
Main.java:9: cannot find symbol
symbol : variable SayHello
Wenn ich wiederum in den Files Main.java und SayHello "package hello" auskommentiere funktioniert alles.
Das hat wohl irgendwas mit dem classpath zu tun. Es wird ja noch komplizierter, wenn ich auf verschiedene Packages verteilte eigene Klassenbibliotheken verwenden will. Es ist doch hoffentlich nicht so, daß ein Nutzer erstmal alle möglichen Classpaths setzten muß, bevor er eine Application benutzen darf?!?
Bitte schimpft nicht mit mir, habe stundenlang gegoogelt und VIEL ZUVIEL Text gefunden, aber nichts das mir geholfen bzw. ich verstanden hätte. ;(
Eigene Klassenbibliotheken schreiben und als Package in andere Projekte einbinden hab ich INNERHALB von Netbeans schon geschafft. Trotzdem habe ich offensichtlich das Konzept der Packages gedanklich noch nicht durchdrungen.
Kann mir jemand auf die Sprünge helfen?
Ziemlich abgegesseben Gruß
nossek
nachdem ich meine Java-Gehversuche bislang immer in NetBeans kompiliert und ausgeführt hatte, wollte ich mal probieren, in NetBeans erstellten Code im Terminal (Mac OS 10.6) zu starten.
Dafür habe ich ganz von vorne angefangen und in Netbeans ein HelloWorld Projekt (name "Hello")geschrieben, wo der ganze code (natürlich) in einem File Main.java steht. Die von NetBeans erzeugte binary-Datei heißt natürlich Main.class - so weit so gut.
Versuch 1:
- im Terminal mit cd in das Verzeichnis wechseln, in dem die Datei Main.class liegt OKAY
- java Main ausführen GEHT NICHT
Die Fehlermeldung beginnt so:
Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: hello/Main)
Versuch 2:
- ins Verzeichnis gewechselt, wo Main.java liegt OKAY
- mit javac Main.java kompiliert OKAY (in dem Verzeichnis liegt jetzt eine Main.class)
- java Main ausführen geht nicht, selbe Fehlermeldung wie bei Versuch 1.
Versuch 3:
- In der Datei Main.java die Zeile
Java:
package hello;
- javac Main.java OKAY
- java Main OKAY, das Programm wird ausgeführt.
Zuletzt habe ich dem NetBeans Projekt noch ein File mit der Klasse SayHello mit einer statischen Methode hinzugefügt, die dann in der main-methode aufgerufen wird.
Jetzt geht noch nicht mal mehr das compilieren mit javac, Fehlermedlung beginnt so:
Main.java:9: cannot find symbol
symbol : variable SayHello
Wenn ich wiederum in den Files Main.java und SayHello "package hello" auskommentiere funktioniert alles.
Das hat wohl irgendwas mit dem classpath zu tun. Es wird ja noch komplizierter, wenn ich auf verschiedene Packages verteilte eigene Klassenbibliotheken verwenden will. Es ist doch hoffentlich nicht so, daß ein Nutzer erstmal alle möglichen Classpaths setzten muß, bevor er eine Application benutzen darf?!?
Bitte schimpft nicht mit mir, habe stundenlang gegoogelt und VIEL ZUVIEL Text gefunden, aber nichts das mir geholfen bzw. ich verstanden hätte. ;(
Eigene Klassenbibliotheken schreiben und als Package in andere Projekte einbinden hab ich INNERHALB von Netbeans schon geschafft. Trotzdem habe ich offensichtlich das Konzept der Packages gedanklich noch nicht durchdrungen.
Kann mir jemand auf die Sprünge helfen?
Ziemlich abgegesseben Gruß
nossek