0

I am hoping I can get pointed in the right direction regarding what knowledge I’m lacking that’s preventing me from understanding the root cause of this. I have a try/catch block in a class named ‘IndexFile’, I would like the catch to run a method in my Controller class that makes a pane visible. When forcing an exception, the catch block is throwing a NullPointerException error as if something is forbidding my IndexFile class from executing a method in the default Controller class. I have tried both instantiating/creating an instance of the Controller class as well as extending it but the problem remains. To clarify, my question isn't what a NullPointer means, but why Pane is null. Wouldn't it be initialized when the gui is created?

I am very new to programming so please excuse any blatant oversights on my part, they are certainly not intentional. I have tried to find a solution to this issue on my own but the information I located was either not applicable to my situation or was too over my head for me to find the commonality. Thanks in advance for any suggestions you can provide!

Catch block; presently extending Controller to access the ‘errorPopup’ method.

catch (Exception e) {
        System.out.println(e);
        System.out.println("getting this far");

        errorPopup("test");
    }

The errorPopup method itself located in the Controller class. errorPane.setVisible works fine if run directly from the Controller class, but not when called from the IndexFile class.

public void errorPopup(String error) {
    errorPane.setVisible(true);
    errorPaneText.setText(error);
}

EDIT - The IndexFile class itself:

public class IndexFile extends Controller{

public void seasonIndex(int epCount) {

    StringBuilder seriesIndex = new StringBuilder();
    StringBuilder seriesBreakout = new StringBuilder();
    File index = new File("C:\\index.html");
    File breakout = new File("C:\\breakout.html");

    seriesIndex.append("removed for length");

    seriesBreakout.append("removed for length");

    BufferedWriter writer;
    try {
        writer = new BufferedWriter(new FileWriter(index));
        writer.append(seriesIndex);
        writer.flush();
        writer = new BufferedWriter(new FileWriter(breakout));
        writer.append(seriesBreakout);
        writer.flush();
    } catch (Exception e) {
        System.out.println(e);
        System.out.println("getting this far");

        errorPopup("test");
    }
}

Exception log:

> Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1787)
    at javafx.fxml/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1670)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
    at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8863)
    at javafx.controls/com.sun.javafx.scene.control.behavior.TextFieldBehavior.fire(TextFieldBehavior.java:184)
    at javafx.controls/com.sun.javafx.scene.control.behavior.TextInputControlBehavior.lambda$keyMapping$62(TextInputControlBehavior.java:330)
    at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
    at javafx.graphics/javafx.scene.Scene$KeyHandler.process(Scene.java:4083)
    at javafx.graphics/javafx.scene.Scene$KeyHandler.access$1600(Scene.java:4029)
    at javafx.graphics/javafx.scene.Scene.processKeyEvent(Scene.java:2146)
    at javafx.graphics/javafx.scene.Scene$ScenePeerListener.keyEvent(Scene.java:2620)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:217)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:149)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleKeyEvent$1(GlassViewEventHandler.java:248)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleKeyEvent(GlassViewEventHandler.java:247)
    at javafx.graphics/com.sun.glass.ui.View.handleKeyEvent(View.java:547)
    at javafx.graphics/com.sun.glass.ui.View.notifyKey(View.java:971)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175)
    at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
    at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
    at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1784)
    ... 47 more
Caused by: java.lang.NullPointerException
    at sample.Controller.errorPopup(Controller.java:156)
    at sample.WebFiles.IndexFile.seasonIndex(IndexFile.java:225)
    at sample.Controller.search(Controller.java:174)
    ... 58 more
Apple
  • 63
  • 6
  • If you are using JavaFX, try using an Alert for pop ups – davigzzz Apr 02 '18 at 14:41
  • Probably you're using the wrong instance of the controller. Hard to tell though without code showing how get the instance you use `IndexFile.seasonIndex` – fabian Apr 02 '18 at 14:43
  • I am indeed using JavaFX and am aware of the Alert functionality however I really wish to learn why THIS isn't working, thanks for the suggestion! – Apple Apr 02 '18 at 14:44
  • Can you put the code for IndexFile class? – davigzzz Apr 02 '18 at 14:50
  • Added via edit, please let me know if you think there's anything else I left out that I should not have, thanks :) – Apple Apr 02 '18 at 14:51
  • Possible duplicate of [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – Johannes Kuhn Apr 02 '18 at 15:08

0 Answers0