Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8293894

Drag and drop a file produces NullPointerException Cannot read field "dragboard"

XMLWordPrintable

      ADDITIONAL SYSTEM INFORMATION :
      GNU/LINUX Fedora 36 (x86_64)
      5.19.8-200.fc36.x86_64

      openjdk 18.0.2 2022-07-19
      OpenJDK Runtime Environment (Red_Hat-18.0.2.0.9-1.rolling.fc36) (build 18.0.2+9)
      OpenJDK 64-Bit Server VM (Red_Hat-18.0.2.0.9-1.rolling.fc36) (build 18.0.2+9, mixed mode, sharing)

      A DESCRIPTION OF THE PROBLEM :
      Using Fedora 36 (GNOME), dragging and dropping a file on a JavaFX control will produce a NullPointerException:
      Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Cannot read field "dragboard" because "this.this$0.dndGesture" is null

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1. Use Fedora Linux
      2. Use ANY JavaFX release (the bug is also present in all JavaFX pre-releases)
      2. Run the example code (or a JavaFX project code that has drag and drop feature on a control)
      3. Drag and drop a file on a JavaFX control and JavaFX will produce a NullPointerException

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      No nullpointerexception
      ACTUAL -
      Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Cannot read field "dragboard" because "this.this$0.dndGesture" is null
      at javafx.graphics@19/javafx.scene.Scene$DropTargetListener.drop(Scene.java:3001)
      at javafx.graphics@19/com.sun.javafx.tk.quantum.GlassSceneDnDEventHandler.lambda$handleDragDrop$2(GlassSceneDnDEventHandler.java:111)
      at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
      at javafx.graphics@19/com.sun.javafx.tk.quantum.GlassSceneDnDEventHandler.handleDragDrop(GlassSceneDnDEventHandler.java:107)
      at javafx.graphics@19/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleDragDrop$11(GlassViewEventHandler.java:772)
      at javafx.graphics@19/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
      at javafx.graphics@19/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleDragDrop(GlassViewEventHandler.java:771)
      at javafx.graphics@19/com.sun.glass.ui.View.handleDragDrop(View.java:708)
      at javafx.graphics@19/com.sun.glass.ui.View.notifyDragDrop(View.java:1037)
      at javafx.graphics@19/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
      at javafx.graphics@19/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:316)
      at java.base/java.lang.Thread.run(Thread.java:833)

      ---------- BEGIN SOURCE ----------
      package org.example;

      import javafx.application.Application;
      import javafx.scene.Scene;
      import javafx.scene.input.Dragboard;
      import javafx.scene.input.TransferMode;
      import javafx.scene.layout.StackPane;
      import javafx.stage.Stage;

      public class Main extends Application {
          public static void main(String[] args) {
              launch(args);
          }

          @Override
          public void start(final Stage primaryStage) {
              final StackPane root = new StackPane();
              primaryStage.setScene(new Scene(root, 300, 250));
              primaryStage.show();

              root.setOnDragOver(event -> {
                  if (event.getGestureSource() != root && event.getDragboard().hasFiles()) {
                      event.acceptTransferModes(TransferMode.COPY_OR_MOVE);
                  }
                  event.consume();
              });

              root.setOnDragDropped(event -> {
                  final Dragboard db = event.getDragboard();
                  boolean success = false;
                  if (db.hasFiles()) {
                      db.getFiles().forEach(f -> System.out.println(f.getAbsolutePath()));
                      success = true;
                  }
                  event.setDropCompleted(success);
                  event.consume();
              });
          }
      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      None available

      FREQUENCY : always


            pnarayanaswa Praveen Narayanaswamy
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: