# Probleme mit OpenJDK



## marlem (27. Okt 2019)

Hallo,

um meine Probleme der Reihe nach in den Griff zu bekommen, mache ich ein neues Thema auf.
Ich habe nach dieser Anleitung OpenJDK und OpenJFX installiert:





dank der supertollen Hilfe von diesem Forum kann ich meinen selbstentwickelten Texteditor mit JavaFX im Dosfenster compilieren:


> C:\Users\Markus Lemcke>cd C:\Projekte\Java\JTeditorFX\src
> 
> C:\Projekte\Java\JTeditorFX\src>javac Main.java --module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml,java.logging,java.desktop  *.java
> 
> ...



Um mit *JavaFX* ein paar Sachen zu testen die ich in einem Online-Kurs lerne, habe ich ein neues Verzeichnis angelegt:


> C:\Projekte\Java\JavaFXUdemy\src\JavaFXUdemy>



Das Compilieren in diesem *Verzeichnis* klappt:


> javac Main.java --module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml,java.logging,java.desktop  *.java



Das starten nicht, es kommt folgende Fehlermeldung:


> C:\Projekte\Java\JavaFXUdemy\src\JavaFXUdemy>java --module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml,java.logging,java.desktop -cp . Main
> Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden
> Ursache: java.lang.NoClassDefFoundError: JavaFXUdemy/Main (wrong name: Main)



*Frage:*
Woran kann es liegen, dass das Starten einer JavaFX-Anwendung  in einem Verzeichnis funktioniert und im anderen Verzeichnis nicht?


----------



## mrBrown (27. Okt 2019)

marlem hat gesagt.:


> Woran kann es liegen, dass das Starten einer JavaFX-Anwendung in einem Verzeichnis funktioniert und im anderen Verzeichnis nicht?


Steht in Main eine Package-Angabe?


----------



## marlem (27. Okt 2019)

Das Verzeichnis in dem die Datei Main.java liegt heißt so:


> C:\Projekte\Java\JavaFXUdemy\src\JavaFXUdemy



Der Packagename steht in der Main.java drin:

```
package JavaFXUdemy;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.event.*;
import javafx.geometry.Insets;

public class Main extends Application  {
   
       
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    launch(args);
    }
   
   
    public void start(Stage primaryStage) {
     try {
             GridPane grid = new GridPane();
             grid.setPadding(new Insets(10,10,10,10));
             grid.setVgap(10);
             grid.setHgap(10);
             RadioButton rb1 = new RadioButton();
            rb1.setText("Play");
            RadioButton rb2 = new RadioButton();
            rb2.setText("Pause");
            RadioButton rb3 = new RadioButton();
            rb3.setText("Play");
            grid.getChildren().addAll(rb1,rb2,rb3);
            GridPane.setConstraints(rb1,0,0);
            ToggleGroup group = new ToggleGroup();
            rb1.setToggleGroup(group);
            rb2.setToggleGroup(group);
            rb3.setToggleGroup(group);
           
         
           
             Scene scene = new Scene(grid, 300,150);
             primaryStage.setScene(scene);
             primaryStage.show();
           
           
             } catch (Exception e) {
               e.printStackTrace();
               }
   
      }
    }
```

Anmerkung:
Die vielen Importanweisungen stehe da drin, weil ich in dieser Datei unterschiedliche Sachen mit JavaFX ausprobiere.


----------



## mrBrown (27. Okt 2019)

Kompilier das ganze mal aus src heraus (und nicht in dem Unterordner JavaFXUdemy), und gib als Main-Klasse dann `JavaFXUdemy.Main` an.


Dürfte klappen mit:

```
javac JavaFXUdemy/Main.java --module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml,java.logging,java.desktop

java --module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml,java.logging,java.desktop -cp . JavaFXUdemy.Main
```


----------



## marlem (27. Okt 2019)

Du Held!
Programm startet! DANKE!
Kannst Du mir erkläre, was ich falsch gemacht habe, bitte?


----------



## mrBrown (27. Okt 2019)

Deine Main-Klasse hat ein package angegeben, und packages übersetzt die JVM im Normalfall in Ordnerstrukturen, die sollten sich also immer entsprechen und javac/java-Aufrufe außerhalb der Package-Struktur stattfinden


----------



## marlem (27. Okt 2019)

Okay, ich habe also beim anlegen des Projekts einen Fehler gemacht.
normal speichert Eclipse die .Java Dateien im Verzeichnis "src". 
Bei mir sind die Javadateien im Verzeichnis:
\src\JavaFXUdemy
Also src hat noch ein Unterverzeichnis.
Das war *nicht* von mir *gewollt*!

Frage:
Da ich jetzt im Dos-Fenster das Programm compilieren und starten kann.
Kann ich diese Erkenntnis dazu nutzen, dass es auch in Eclipse wieder klappt.
Hast Du eine Idee was ich in Eclipse versuchen kann?


----------

