# Main Class Not Found...



## Mak (29. Okt 2009)

Hallo,
ich bin noch relativ neu in Java eingestiegen und habe jetzt ein kleines Problem:
Ich habe meine ersten Programme per Kommandozeile kompliert und ausgeführt, das hat soweit alles funktioniert.

Jetzt habe ich mit NetBeans ein kleines HelloWorld Programm geschrieben:


```
package helloworld;

public class Main {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }

}
```

Mit dem Run-Button in NetBeans funktioniert das. Dann habe ich mal versucht, die Datei manuell zu kompilieren:

PFAD: javac Main.java
java Main



> Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: hel
> loworld/Main)
> at java.lang.ClassLoader.defineClass1(Native Method)
> at java.lang.ClassLoader.defineClass(Unknown Source)
> ...



Ich habe jetzt alles zu dem Thema durchgelesen, was ich finden konnte, leider hat irgendwie nichts geholfen. Ich glaube, ich habe da auch grundsätzlich irgendwas falsch verstanden. Witzigerweise passiert das nur mit Dateien, die ich mit NetBeans erstellt habe. Woran genau liegt das?


----------



## faetzminator (29. Okt 2009)

du musst es mit [c]javac helloworld/Main.java[/c] kompilieren und mit [c]java helloworld.Main[/c] aufrufen. Die Ordnerstruktur muss dabei korrekt sein (Ordner = Java-Package).


----------



## Mak (29. Okt 2009)

Mh, ich hätte schwören können, das hätte ich auch schon versucht...
Naja, vielen Dank jedenfalls.

Ähnliches Problem: Ich habe die Datei jetzt mit NetBeans probeweise mal als .jar gepackt. Wenn ich das jetzt ausführen (mit der javaw.exe unter Windows), spuckt die mir auch "Could not find the main class: PFAD\dist\helloworld.jar. Program will exit" aus.

PFAD\dist java helloworld.jar gibt entsprechend die Fehlermeldung aus meinem ersten Post aus.
PFAD\dist java -jar helloworld.jar funktioniert allerdings.

In der MANIFEST.MF steht 





> Main-Class: helloworld.Main



Ich denke mal die Lösung ist ähnlich einfach? 
Vielen Dank schon mal


----------



## faetzminator (29. Okt 2009)

[c]javaw -jar helloworld.jar[/c] ?


----------



## Mak (29. Okt 2009)

```
javaw -jar helloworld.jar
```
Gibt weder Fehlermeldung noch HelloWorld! aus.

Aber 
	
	
	
	





```
java -jar helloworld.jar
```
 funktioniert wie gesagt.

Aber man kann .jar-Dateien doch normalerweise einfach per Doppelklick starten. Und das funktioniert bei eben nicht. Ich möchte ja nicht jedes Mal über die Konsole gehen.


----------



## jdk6man (29. Okt 2009)

javaw ist nur für das ausführen von anwendungen mit GUI zuständig. Daher zeigt das Programm keine Konsolenausgaben an.

Wenn du Windows hast musst du mal unter Extras->Ordneroptionen->Dateitypen nachsehen. Dort kannst du die Endung jar mit java verknüpfen.


----------



## Mak (29. Okt 2009)

Habe ich schon. .jar-Dateien sind mit der javac.exe verknüpft (stimmt doch?).
Für andere .jar Dateien funktioniert das jedenfalls. Für meine eigenen nicht. Egal ob mit oder ohne GUI.


----------



## jdk6man (29. Okt 2009)

du solltest die jar Dateien mit javaw.exe verknüpfen. Mach es so: javaw.exe -jar "%1"


----------



## Unregistriert (29. Okt 2009)

Ach sorry, ich meinte auch javaw.exe -.-

Also noch mal richtig: jacaw.exe liefert bei allen .jar Dateien von mir folgende Fehlermeldung:



> Could not find the main class: PFAD\dist\helloworld.jar. Program will exit



Allerdings habe ich die Dateien nur mit javaw.exe verknüpft (ohne Paramter). Wo genau kann ich denn den Parameter mit angeben?


----------



## jdk6man (29. Okt 2009)

also dem eben beschriebenen pfad im explorer nachgehen. Dann hast du einen Dialog mit allen Dateiendungen. Dort wählst du jar aus und klickst auf erweitert. Dort gehst du beim fettgedruckten vorgang auf bearbeiten und trägst bei anwendung für diesen vorgang das ein was ich im vorherigen post geschrieben habe.


----------



## Mak (29. Okt 2009)

Hm, ich benutze Windows7, da gibts diesen Tab nicht mehr und ich finde grade irgendwie keine Möglichkeit, das zu ändern.
Aber dann ist das kein Java-Problem mehr. Irgendwie kriege ich das raus. 
Vielen Dank für die Hilfe.

Wäre natürlich trotzdem super, wenn jemand wüsste wie man in Windows7 hinbekommt.


----------



## jdk6man (29. Okt 2009)

hab was über google gefunden das müsste auch bei dir funktionieren


----------

