# Java Projekt läuft nur in Eclipse



## theqwe (5. Jan 2020)

Hallo zusammen,

ich habe ein Problem. Ich programmiere zurzeit ein Textadventure mit eclipse. Das Programm läuft soweit gut und ich wollte es gerne jemanden zum antesten schicken. Das Problem ist, dass ich das Programm nur in eclipse ausführen kann. Sobald ich mit die Start.class Datei aus dem bin Ordner mit der Windows Shell ausführen will, kriege ich ein "java.lang.NoClassDefFoundError". Alle Klassen sind da enthalten. Auch kann ich die .java Datein mit javac nicht selbst kompilieren. Es werden immer Fehler geworfen. Das Projekt hat aber keine Errors, wenn nur Warnungen für ungenutze Variablen.

Was mache ich denn falsch?


----------



## kneitzel (5. Jan 2020)

Sag bitte einmal genau, was Du machst. Vor allem wundert mich, dass in einer class Datei alles drin sein soll. Denn Du sprichst von mehreren Klassen und selbst wenn alles innere Klassen von Start wären, wären das eigenständige class Dateien.

Daher wäre es sinnvoll, wenn Du mehr Details gibst: Was für Klassen / java Files hast Du? Wie versuchst Du die zu übersetzen? (Dann kann man Dir sagen was beim javac Aufruf schief läuft!)

Und dabei ganz wichtig: Gib immer die genauen Details: Was machst Du genau? Und was ist der exakte Fehler? Ohne Detail können wir sonst nur raten...


----------



## theqwe (5. Jan 2020)

Hi,

also ich habe ein Paket namens Adventure. Darin sind die Klassen Start, Inventar, Spieler, Funktionen und Sound enthalten. Nur die Start Klasse hat eine main Methode. Alle anderen werden aus der Start aufgerufen.
Übersetzten habe ich es mit verschiedenen Methoden versucht: Mit javac Start.class oder Adventure.Start und noch paar aus dem Internet. Keine davon funktionierte. Im bin Ordner liegen ja schon alle .java in .class Dateinen. Diese lassen sich aber auch nicht starten.


----------



## kneitzel (5. Jan 2020)

Also wenn du die Dateien übersetzen willst, dann gehst du in das Hauptverzeichnisnder Sourcen (also da, wo der Ordner Adventure ist, wobei namespaces komplett klein geschrieben werden sollten). Und dann gibst du alle Java Dateien an, also

javac Adventure\Start.java Adventure\Inventar.java ....
Dann werden alle Java Dateien übersetzt.

Und alle class Dateien brauchst Du dann zum ausführen. Bei den class Dateien muss der Pfad aber erhalten bleiben, also wieder ein Ordner mit z.B. Adventure\Start.class und so.
Und dann kannst du das aufrufen mit java Adventure,Start
==> da wird keine Datei sondern eine Klasse angegeben, daher . und auch kein .class oder so.

Das ist erst einmal das generelle grobe Prinzip. Aber ggf. gibt es noch Resource Dateien, die berücksichtigt werden müssen, Oder ein classpath. Letzteres ist z.B. wichtig wenn man Abhängigkeiten hat. ....


----------



## theqwe (5. Jan 2020)

Danke für deine Antwort. Ich habe in meinem vorherigen Post noch 3 Bilder angehangen. Das kommt dabei raus, wenn ich javac oder java verwende.


----------



## LimDul (5. Jan 2020)

Du musst javac auf oberster Ebene, im Folder src verwenden - nicht im Package-Ordner adventure.

also: javac adventure/*.java


----------



## theqwe (5. Jan 2020)

LimDul hat gesagt.:


> Du musst javac auf oberster Ebene, im Folder src verwenden - nicht im Package-Ordner adventure.
> 
> also: javac adventure/*.java



Das war tatsächlich der Fehler. Ich wollte im Adventure Ordner alle .class Dateien kompilieren. Das der Adventure Ordner aber auch dazu gehören muss wusste ich noch nicht. Hat funktioniert und kann es auch nun mit java Adventure/Start starten.

Vielen Dank an euch beiden.


----------

