Zum Inhalt springen

Java Installation


Empfohlene Beiträge

Geschrieben

Hallo

folgendes Problem, ich möchte java bei mir in der Arbeit programmieren.

Jetzt hab ich jdk1.6 unter c:\jdk.6 installiert. Dann hab ich die Benutzervariable JAVA_HOME gesetzt und bei der Systemvariable path den pfad zum bin-Ordner eingefügt.

Nur um auszuprobieren hab ich folgende Class erstellt:

class HelloWorld

{

public static void main (String []args)

{

System.out.println("HelloWorld");

}

}

die datei hab ich im jdk.6 ordner im Class-Ordnergespeichert.

Wenn ich nun im CMD die datei auführenmöchte kommt folgender Fehlercode (Das Kompilieren funktioniert ja sogar ....)

C:\jdk.6\Class>javac HelloWorld.java

C:\jdk.6\Class>java HelloWorld

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld

Caused by: java.lang.ClassNotFoundException: HelloWorld

at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:190)

at java.lang.ClassLoader.loadClass(ClassLoader.java:307)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

Could not find the main class: HelloWorld. Program will exit.

Ich weiß, dummes Problem, bin allerdings Anfänger und naja. Würds eben gerne lernen :)

lg kobey

_______________________________________________________________

Geschrieben

Hmm, mit Deiner Beispielklasse funktioniert es bei mir.

Es sollte zwar nicht passieren, aber vielleicht ist ja der Classpath verdreht und nimmt das aktuelle Verzeichnis nicht mit auf. Probier mal folgendes: java -cp . HelloWorld

Das setzt den Classpath, also den Pfad (die Pfade), unter denen nach Klassen gesucht wird, explizit auf das Verzeichnis, in dem Du dich befindest. Dann musst Du natürlich das Kommando auch aus C:\jdk.6\Class heraus ausführen.

Peter

Geschrieben

ok habs jetzt mal mit java -cp . HelloWorld ausprobiert, und da gehts einwandfrei. Aber die Pfade müssten normal auch alle stimmen...

Noch mal zur sicherheißt, was muss ich bei den Umgebungsvariablen alles machen? (Nur zur Kontrolle ob ich das richtige getan habe: zur variable "path" habe ich c:\jdk.6\bin angehängt und ich habe die Benutzervariable JAVA_HOME mit dem link c:\jdk.6 angelegt.)

lg Kobey

__________________________________________________________________

Geschrieben

Die von Dir genannten Pfade haben damit nichts zu tun. Es könnte sein, dass es bei Dir eine global definierte Systemvariable CLASSPATH gibt, die auf irgendwas zeigt. Manche Java-Anwendungen haben das früher gemacht, damit ihr classpath gepasst hat. Das ist aber absolut schlechter Stil und sehr fehleranfällig.

Schöne Grüße,

Peter

Geschrieben

ohhh jetzt gehts :) Hab das Public nich drin gehabt... is das eigl üblich, da public vor zu schreiben?

Vielen dank an euch und besonders an etreu ;)

lg kobey

__________________________________________________________________________

Geschrieben

Wenn es deine Hauptklasse (mit der main-Methode) ist, dann schon.

Deswegen hat auch der Umweg mit Classpath geholfen. Ohne public hatte die Klasse den modifier package und konnte deswegen nur aus dem Verzeichnis aufgerufen werden.

Geschrieben

Hallo etreu,

an das public habe ich als erstes auch gedacht, es aber wieder verworfen, weil es bei mir funktioniert hat (Ubuntu 10.04 und jdk6.1.x) - ohne explizite Angabe von "-cp". Weißt Du, ob das an meiner Umgebung liegt?

Schöne Grüße,

Peter

Geschrieben

Vielleicht hast du "." schon im CLASSPATH drin?

Ubuntu funktioniert zwar schön, ist aber nicht immer transparent, wenn man "unten" was machen möchte.

Wie sehen denn deine Umgebungsvariablen aus?

Geschrieben

Du hast recht, dass die Anwenderfreundlichkeit bei Ubuntu einher geht mit einer teilweisen Unsichtbarkeit von Einstellungen. Allerdings ist meine Java-Umgebung nicht über einen Paketmanager installiert, sondern manuell. Deshalb habe ich auch keine globale Variable CLASSPATH definiert, für den ersten Test auch keinen cp, den ich der VM mitgegeben hätte. Wenn, dann müsste es an der Implementierung des JDK für Linux liegen (ich habe die .bin installiert).

Naja, hätte mich nur interessiert, aber in meinen Anwendungen ist dieses Phänomen irrelevant, weil ich mit den Modifiern jeweils explizit etwas ausdrücken möchte. Eine Startklasse für eine Anwendung ist meinem Verständnis nach immer öffentlich. ;)

Schöne Grüße,

Peter

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...