Exception in thread "main" java.lang.Error: Unresolved compilation problem:

urmelausdemeis

Neues Mitglied
Bekomme immer wieder diese Fehlermeldung beim ausführen meines Programms. Könnt ihr mir weiterhelfen?
Ziel des Programms ist es ein Labyrinth zu erstellne und über eine Grafikausgabe auszugeben.
Vielen Dank schonmal im vorraus:
Euer Urmel
Java:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Labyrinth extends JPanel {

    private int[][] maze;
    private int rows;
    private int cols;

    public Labyrinth(int rows, int cols) {
        this.rows = rows;
        this.cols = cols;
        this.maze = new int[rows][cols];
        generateMaze(0, 0);
    }

    private void generateMaze(int x, int y) {
        maze[x][y] = 1;

        int[] neighbors = new int[] {-1, 0, 1, 0, -1};
        for (int i = 0; i < 4; i++) {
            int dx = neighbors[i];
            int dy = neighbors[i+1];
            int nx = x + dx;
            int ny = y + dy;
            if (nx < 0 || ny < 0 || nx >= rows || ny >= cols || maze[nx][ny] == 1) {
                continue;
            }
            maze[x + dx/2][y + dy/2] = 1;
            generateMaze(nx, ny);
        }
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        int cellSize = 20;

        // Draw maze
        g.setColor(Color.BLACK);
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                if (maze[i][j] == 0) {
                    g.fillRect(j*cellSize, i*cellSize, cellSize, cellSize);
                }
            }
        }

        // Draw start and end points
        g.setColor(Color.GREEN);
        g.fillRect(0, 0, cellSize, cellSize);
        g.setColor(Color.RED);
        g.fillRect((cols-1)*cellSize, (rows-1)*cellSize, cellSize, cellSize);
    }

    public static void main(String[] args) {
        Labyrinth l = new Labyrinth(10, 10);
        JFrame f = new JFrame();
        f.setSize(300, 300);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(l);
        f.setVisible(true);
    }
}
 
Vermutlich hast du noch ungespeicherte Änderungen in dieser Datei/Klasse.
Drück mal in deinem Java-Editor auf "speichern".
Rein Java-Syntaxtechnisch ist diese Datei/Klasse ohne Fehler.
 
Also das im Titel ist nicht die eigentliche Fehlermeldung. Die Zeile besagt nur, dass es Übersetzungsfehler gab. Aber wie der Doppelpunkt andeutet: Die Details werden im Anschluss noch gekommen sein.

Neben der Möglichkeit, die @httpdigest genannt hat, könntes es auch noch sein, dass Du eine module-info.java hast und Du daher die Module, die Du nutzt, auch importieren musst. AWT und Swing sind in java.desktop sprich: in die module-info.java müsste ein requires java.desktop; (Oder alternativ einfach die module-info.java löschen).
 
Hi vielen Dank für die schnellen Antworten. Das mit dem Speichern hat leider nicht geholfen. Wo finde ich denn die module-info.java Datei um sie zu löschen? @KonradN
Nach der Fehlermeldung kommt noch diese Meldung:
at Labyrinth.main(import java.awt.java:58)
Sorry ganz vergessen das noch zu erwähnen.
 
Die Datei wäre dierekt im src oder src/main/java Verzeichnis.

Und bei der weiteren Fehlermeldung ist wohl noch etwas schief gegangen vermute ich. Da - so es geht - ruhig immer die ganze Ausgabe per Copy & Paste übergeben ... lieber etwas zu viel als zu wenig. Auch wenn es etwas länger werden sollten.

Aber vielleicht ist ja mein Rateversuch dennoch zielführend. (Da wäre dann meine Erwartungshaltung, dass Du eine Meldung bekommen würdest a.la. Labyrinth.java:[3,12] package java.awt is not visible (package java.awt is declared in module java.desktop, but module xxx does not read it)
 
Mit NetBeans und Java 17 (und ohne module.info) lässt sich das Programm kompilieren und ergibt folgendes Bild:

NB15_Labyrinth.JPG
 
Teil II: mit Eclipse und module.info führen einige Änderungen zum selben Ziel (inkl. IDE Hinweis wg. fehlender serialVersionUID)

module.info
Code:
module Labyrinth {
    requires java.desktop;
}

package.info
Code:
package Labyrinth;

Labyrinth.java (im Package "Labyrinth" zu platzieren)
Code:
package Labyrinth;

import java.awt.Color; 
...

Eclipse_Labyrinth.JPG
 

Zurück
Oben