2017-04-16 3 views
0

Ich versuche, mein Projekt zu einem ausführbaren Glas, aber das Problem ist, dass die GUI nicht angezeigt wird. Von dem Fehler in meinem Cmd erzähle ich, dass es etwas über meine Bildansichten ist.Java Runnable Jar mit Imageview zeigt keine GUI

Mein Projekt enthält Bildansichten, die sich in einem anderen Ordner als dem Quellrahmen befinden. Ich habe die buildpath gesetzt, aber es scheint immer noch nicht

Dies wird zu arbeiten, wo ich die Bilder auf die GUI hinzufügen:

String path = "./imageTest/"; 
     File folder = new File(path); 
     File[] listOfFiles = folder.listFiles(); 
     for (File file : listOfFiles) { <----- Line 51 
      ImageView imageView; 
      imageView = createImageView(file); 
      tile.getChildren().addAll(imageView); 
     } 

Der Ordner imageTest als source im buildpath hinzugefügt wird

Dies ist der Fehler, den ich bekommen, wenn das Glas durch cmd ausgeführt wird:

"Exception in Application start method 
Exception in thread "main" java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 
Caused by: java.lang.RuntimeException: Exception in Application start method 
     at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) 
     at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182) 
     at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NullPointerException 
     at application.guifx.MainScreen.mainScene(MainScreen.java:51) 
     at application.guifx.MainApp.start(MainApp.java:37) 
     at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) 
     at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) 
     at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 
     at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
     at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
     at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
     ... 1 more" 

Dies ist die MainApp

public class MainApp extends Application { 
    private Service service; 
    private Stage stage; 
    private ScrollPane root = new ScrollPane(); 

    private MainScreen mainScreen; 

    public MainApp() { 
     service = Service.getService(); 
     StorageInitializer.initStorage(); 

    } 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     service = Service.getService(); 

     stage = primaryStage; 

     mainScreen = new MainScreen(stage); 

     stage.setWidth(100); 
     stage.setHeight(100); 

     primaryStage.setWidth(1000); 
     primaryStage.setHeight(850); 

     Scene scene = mainScreen.mainScene();<----- Line 37 

     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 

    } 

} 

Um klar zu sein ... Das Programm funktioniert, wenn sie durch Eclipse laucnhing, aber nicht, wenn ich es ein lauffähiges Glas machen Dies ist, wie das System aussieht, wenn es von Eclipse Link

+0

Mögliche Duplikat enthält [Was für eine Nullpointer ist, und wie kann ich es beheben?] (Http://stackoverflow.com/questions/218384/what-is-a- nullpointerexception-and-how-do-i-fix-it) – Seelenvirtuose

Antwort

1

Ihre variable Öffnung listOfFiles ist null. Siehe: https://docs.oracle.com/javase/8/docs/api/java/io/File.html#listFiles--

Returns null, wenn dieser abstrakte Pfadname kein Verzeichnis nicht bezeichnen, oder wenn ein E/A-Fehler auftritt.

  • Überprüfen Sie, ob die Variable path mit einem bestehenden Verzeichnis initialisiert wird.
  • Überprüfen Sie, ob Ihre ausführbare Datei berechtigt ist, das Verzeichnis zu lesen.
  • Überprüfen Sie, ob die Verzeichnisdateien
+0

Ich stimme zu, dass es sein muss, weil die listOfFiles null ist, und das bedeutet, dass der Build-Pfad zum Ordner imageTest nicht funktioniert. Wie mache ich das richtig? Meine Sonnenfinsternis scheint den Weg leicht zu finden –

+0

Sie können diesen Beitrag lesen, um verschiedene Methoden zum Laden Ihrer Ressourcen zu lernen: http://stackoverflow.com/questions/676250/differentways-of-loading-a-file-as-an -Eingabestrom – fandango

Verwandte Themen