Java – die neusten Beiträge

Java ImGui Error EXCEPTION_ACCESS_VIOLATION?

Ich habe ein Tutorial von GamesWithGabe geschaut (2d game Engine) und habe beim Imgui part einen Fehler bekommen. Ich musste vom Tutorial schon vieles ändern, wegen neuen Versionen. Jetzt bekomme ich beim Aufstartet folgenden Error:

08:38:22: Executing ':Main.main()'...


> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE


> Task :Main.main() FAILED
Hello LWJGL 3.3.6+1!
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffbcc295071, pid=7900, tid=15668
#
# JRE version: OpenJDK Runtime Environment Temurin-21.0.6+7 (21.0.6+7) (build 21.0.6+7-LTS)
# Java VM: OpenJDK 64-Bit Server VM Temurin-21.0.6+7 (21.0.6+7-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# C  [igxelpicd64.dll+0xd45071]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\dev\Java\SuperMariusImGui\JAVA_Loic_Steiner_SuperMarioProjekt\hs_err_pid7900.log
#
# If you would like to submit a bug report, please visit:
#   https://github.com/adoptium/adoptium-support/issues
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
2 actionable tasks: 1 executed, 1 up-to-date


FAILURE: Build failed with an exception.


* What went wrong:
Execution failed for task ':Main.main()'.
> Process 'command 'C:\Program Files\Eclipse Adoptium\jdk-21.0.6.7-hotspot\bin\java.exe'' finished with non-zero exit value 1


* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.


BUILD FAILED in 1s
08:38:24: Execution finished ':Main.main()'.

Wieso bekomme ich diesen Error und wie kann ich den Fixen?? Ich brauche wirklich Hilfe, ich mache ein Projekt und muss Freitag abgeben.

programmieren, Java, Informatik, OpenGL, .gradle

Warum wird das Spielfeld nach der Bauernbewegung so komisch ausgegeben?

Ich wäre jedem einzelnen von euch mega dankbar, wenn ihr mir helfen könntet!

Hallo zusammen,

wir haben die Aufgabe bekommen das Spiel Schach in einer sehr abgespeckten Variante zu implementieren. Das heißt, so wie mein Code momentan aussieht, ist er an sich fertig von den Funktionalitäten. Jedoch ergeben sich zwei Probleme: Einerseits das sich bei einem JUnit-Test der Springer vom Feld [4][4] nicht auf [6][5] bewegen lässt und das die Bauernbewegung sehr schlecht und unregelmäßig funktioniert.

Das bedeutet, dass alle schwarzen Bauern sich auf [2][0] bewegen und alle weißen Bauern, die sich unten befinden, sollen sich nicht bewegen lassen. Außer dem [6][6], der sich dann auf das Feld [5][0] bewegt.

Mein Code ist grundsätzlich so aufgebaut, das es eine ChessPiece-Superklasse gibt, von denen die einzelnen Spielfigurenklassen erben und eine ChessBoard-Klasse, die das Feld abbildet und Figuren bewegt.

Ich bin seit zwei Tagen am Verzweifeln, weil weder ich, noch KI mir helfen konnte. Deswegen wäre ich unglaublich dankbar, wenn einer von euch mich erlösen könnte.

Ich versuche die wichtigsten Implementierungen in den Bildern darzustellen.

Die main-Methode:

Erstellen der Felder:

Die Methode soll grob sagen, ob eine Bewegung true oder false ist:

Ausgeben des Feldes:

Die ausführende Bewegungsmethode:

Beispielausgabe:

Springerbewegung mit JUnit-Test:

Wenn ihr noch was braucht, sagt Bescheid. Ich wäre euch unglaublich dankbar, wenn ihr mir helfen könnt!

Bild zum Beitrag
programmieren, Java, Schach, Programmiersprache, Objektorientierte Programmierung, IntelliJ IDEA

Video abspielen und korrekt beenden (Java programmieren)?

Hallo,

ich probiere gerade mit der Programmiersprache Java einen Video-Player zu programmieren, welcher ein Video abspielen kann und per Button wieder beendet.

Allerdings, wenn ich es ein weiteres Mal öffnen will, wird es nicht mehr angezeigt und nichts passiert mehr. Wie kann ich das lösen? Ich komme einfach nicht mehr weiter oder gibt es eine einfache Möglichkeit?

Danke für eure Kommentare im Voraus.

import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javax.swing.*;
import java.awt.*;
import java.io.File;

public class VideoOpener {
  private static JDialog videoDialog;
  private static MediaPlayer mediaPlayer;
  private static JFXPanel jfxPanel;

  public static void main(String[] args) {
    // Initialisiere JavaFX im Swing-Thread
    SwingUtilities.invokeLater(() -> {
      new JFXPanel(); // Initialisiert JavaFX (damit der JavaFX-Thread startet)
      playVideo(); // Startet das Video nach der Initialisierung
    });
  }

  public static void playVideo() {
    // Erstelle das JDialog für das Video
    videoDialog = new JDialog((Frame) null, "Video", true);
    videoDialog.setUndecorated(true);
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    videoDialog.setSize(screenSize.width, screenSize.height); // Setzt das Fenster auf Vollbild
    videoDialog.setLocation(0, 0); // Positioniert das Fenster oben links
    JPanel videoPanel = new JPanel(new BorderLayout());
    jfxPanel = new JFXPanel(); // JFXPanel für JavaFX
    videoPanel.add(jfxPanel, BorderLayout.CENTER);

    // Schließen-Button (Fenster schließen)
    JButton closeButton = new JButton("Schließen");
    closeButton.addActionListener(e -> {
      stopVideo(); // Stoppt das Video
      videoDialog.dispose(); // Schließt das Dialog-Fenster
      Platform.exit(); // Beendet den JavaFX-Thread
    });
    // Setze den Button unten im JPanel
    videoPanel.add(closeButton, BorderLayout.SOUTH);

    // Lade und starte das Video im JavaFX-Thread
    Platform.runLater(() -> {
      File videoFile = new File("C:/Users/nikla/Pictures/Screenshots/Spiel/Film1.mp4");

      if (!videoFile.exists()) {
        System.err.println("Die Videodatei existiert nicht: " + videoFile.getAbsolutePath());
        return;
      }

      // Wenn der MediaPlayer bereits existiert, stoppen und freigeben
      if (mediaPlayer != null) {
        mediaPlayer.stop();
        mediaPlayer.dispose();
      }

      // Erstelle den neuen MediaPlayer
      Media media = new Media(videoFile.toURI().toString());
      mediaPlayer = new MediaPlayer(media);
      MediaView mediaView = new MediaView(mediaPlayer);
      mediaView.setFitWidth(screenSize.width);
      mediaView.setFitHeight(screenSize.height);

      // StackPane für das Layout
      StackPane stackPane = new StackPane();
      stackPane.getChildren().add(mediaView);

      // Setze die Scene für den JFXPanel
      Scene scene = new Scene(stackPane);
      jfxPanel.setScene(scene);

      // Spiele das Video ab
      mediaPlayer.play();
    });

    // Zeige das Video-Fenster an
    videoDialog.setContentPane(videoPanel);
    videoDialog.setVisible(true);
  }

  // Methode zum Stoppen des Videos und Freigeben des MediaPlayers
  private static void stopVideo() {
    if (mediaPlayer != null) {
      mediaPlayer.stop();
      mediaPlayer.dispose();
      mediaPlayer = null;
    }
  }
}
App, Java, Code, Programmiersprache

Meistgelesene Beiträge zum Thema Java