title: Java Runtime Exception. Java FX
body: <p>I have tried to learn Java FX so I used some of the Oracle Eample Code but when I tried to run it in Netbean IDE, It gives me a Runtime Error. Here is a Piece of code :</p>
  
  <pre><code>    public class WebViewTestOne {
      private  Scene scene;
      @Override
      public void start(Stage stage) {
      stage.setTitle("Web View");
      scene = new Scene(new Browser(),750,500, Color.web("#666970"));
      stage.setScene(scene);
      scene.getStylesheets().add("webviewsample/BrowserToolbar.css");        
      stage.show();
       }
  
  public static void main(String[] args){
        launch(args);
  
       }
                                }
  </code></pre>
  
  <p>and this is the Exception.</p>
  
  <pre><code>Exception in thread "main" java.lang.RuntimeException: Error: class webviewtest.one.WebViewTestOne is not a subclass of javafx.application.Application
  at javafx.application.Application.launch(Application.java:254)
  at webviewtest.one.WebViewTestOne.main(WebViewTestOne.java:33)
  Java Result: 1
  </code></pre>
  
  <p>So what is wrong? I mean since this is an Example from the official Site, why even there is an error? ( the error happens at the     launch(args)</p>
  
  <p><strong>EDIT</strong>: Ok based on the Answer by <strong>rob</strong> I added the Extension that I missed from the example, Now it gives even much more exception after I tried to extend the code. below is the new Code and the Log for the exception.</p>
  
  <pre><code>   package webviewtest.one;
      import javafx.application.Application;
      import static javafx.application.Application.launch;
      import javafx.application.Platform;
      import javafx.beans.value.ChangeListener;
      import javafx.beans.value.ObservableValue;
      import javafx.collections.ListChangeListener.Change;
      import javafx.concurrent.Worker.State;
      import javafx.event.ActionEvent;
      import javafx.event.Event;
      import javafx.event.EventHandler;
      import javafx.geometry.HPos;
      import javafx.geometry.Pos;
      import javafx.geometry.VPos;
      import javafx.scene.Node;
      import javafx.scene.Scene;
      import javafx.scene.control.Button;
      import javafx.scene.control.ComboBox;
      import javafx.scene.control.Hyperlink;
      import javafx.scene.image.Image;
      import javafx.scene.image.ImageView;
      import javafx.scene.layout.HBox;
      import javafx.scene.layout.Priority;
  
      import javafx.scene.layout.Region;
      import javafx.scene.paint.Color;
      import javafx.scene.web.PopupFeatures;
      import javafx.scene.web.WebEngine;
      import javafx.scene.web.WebHistory;
      import javafx.scene.web.WebHistory.Entry;
      import javafx.scene.web.WebView;
      import javafx.stage.Stage;
      import netscape.javascript.JSObject;
  
  public class WebViewTestOne extends Application{
  
      private Scene scene;
  
      @Override
      public void start(Stage stage) {
          // create scene
          stage.setTitle("Web View");
          scene = new Scene(new Browser(), 750, 500, Color.web("#666970"));
          stage.setScene(scene);
          // apply CSS style
          scene.getStylesheets().add("webviewsample/BrowserToolbar.css");
          // show stage
          stage.show();
      }
  
      public static void main(String[] args) {
          launch(args);
  
      }
  }
  class Browser extends Region {
  
      private HBox toolBar;
      private static String[] imageFiles = new String[]{
          "product.png",
          "blog.png",
          "documentation.png",
          "partners.png",
          "help.png"
      };
      private static String[] captions = new String[]{
          "Products",
          "Blogs",
          "Documentation",
          "Partners",
          "Help"
      };
      private static String[] urls = new String[]{
          "http://www.oracle.com/products/index.html",
          "http://blogs.oracle.com/",
          "http://docs.oracle.com/javase/index.html",
          "http://www.oracle.com/partners/index.html",
        //  WebViewSample.class.getResource("help.html").toExternalForm()
      };
      final ImageView selectedImage = new ImageView();
      final Hyperlink[] hpls = new Hyperlink[captions.length];
      final Image[] images = new Image[imageFiles.length];
      final WebView browser = new WebView();
      final WebEngine webEngine = browser.getEngine();
      final Button showPrevDoc = new Button("Toggle Previous Docs");
      final WebView smallView = new WebView();
      final ComboBox comboBox = new ComboBox();
      private boolean needDocumentationButton = false;
  
      public Browser() {
          //apply the styles
          getStyleClass().add("browser");
  
          for (int i = 0; i &lt; captions.length; i++) {
              // create hyperlinks
              Hyperlink hpl = hpls[i] = new Hyperlink(captions[i]);
              Image image = images[i] =
              new Image(getClass().getResourceAsStream(imageFiles[i]));
              hpl.setGraphic(new ImageView(image));
              final String url = urls[i];
              final boolean addButton = (hpl.getText().equals("Documentation"));
  
              // process event 
              hpl.setOnAction(new EventHandler&lt;ActionEvent&gt;() {
                  @Override
                  public void handle(ActionEvent e) {
                      needDocumentationButton = addButton;
                      webEngine.load(url);
                  }
              });
          }
  
          comboBox.setPrefWidth(60);
  
          // create the toolbar
          toolBar = new HBox();
          toolBar.setAlignment(Pos.CENTER);
          toolBar.getStyleClass().add("browser-toolbar");
          toolBar.getChildren().add(comboBox);
          toolBar.getChildren().addAll(hpls);
          toolBar.getChildren().add(createSpacer());
  
          //set action for the button
          showPrevDoc.setOnAction(new EventHandler() {
              @Override
              public void handle(Event t) {
                  webEngine.executeScript("toggleDisplay('PrevRel')");
              }           
          });
  
          smallView.setPrefSize(120, 80);
  
          //handle popup windows
          webEngine.setCreatePopupHandler((PopupFeatures config) -&gt; {
              smallView.setFontScale(0.8);
              if (!toolBar.getChildren().contains(smallView)) {
                  toolBar.getChildren().add(smallView);
              }
              return smallView.getEngine();
          });
  
          //process history
          final WebHistory history = webEngine.getHistory();
          history.getEntries().addListener((Change&lt;? extends Entry&gt; c) -&gt; {
              c.next();
              c.getRemoved().stream().forEach((e) -&gt; {
                  comboBox.getItems().remove(e.getUrl());
              });
              c.getAddedSubList().stream().forEach((e) -&gt; {
                  comboBox.getItems().add(e.getUrl());
              });
          });
  
          //set the behavior for the history combobox               
          comboBox.setOnAction(new EventHandler&lt;ActionEvent&gt;() {
              @Override
              public void handle(ActionEvent ev) {
                  int offset =
                          comboBox.getSelectionModel().getSelectedIndex()
                          - history.getCurrentIndex();
                  history.go(offset);
              }
          });
  
  
          // process page loading
          webEngine.getLoadWorker().stateProperty().addListener(
              new ChangeListener&lt;State&gt;() {
                  @Override
                  public void changed(ObservableValue&lt;? extends State&gt; ov,
                      State oldState, State newState) {
                      toolBar.getChildren().remove(showPrevDoc);    
                      if (newState == State.SUCCEEDED) {
                              JSObject win = 
                                  (JSObject) webEngine.executeScript("window");
                              win.setMember("app", new JavaApp());
                              if (needDocumentationButton) {
                                  toolBar.getChildren().add(showPrevDoc);
                              }
                          }
                      }
                  }
          );
  
          // load the home page        
          webEngine.load("http://www.oracle.com/products/index.html");
  
          //add components
          getChildren().add(toolBar);
          getChildren().add(browser);
      }
  
      // JavaScript interface object
      public class JavaApp {
  
          public void exit() {
              Platform.exit();
          }
      }
  
      private Node createSpacer() {
          Region spacer = new Region();
          HBox.setHgrow(spacer, Priority.ALWAYS);
          return spacer;
      }
  
      @Override
      protected void layoutChildren() {
          double w = getWidth();
          double h = getHeight();
          double tbHeight = toolBar.prefHeight(w);
          layoutInArea(browser,0,0,w,h-tbHeight,0,HPos.CENTER,VPos.CENTER);
          layoutInArea(toolBar,0,h-tbHeight,w,tbHeight,0,HPos.CENTER,VPos.CENTER);
      }
  
      @Override
      protected double computePrefWidth(double height) {
          return 750;
      }
  
      @Override
      protected double computePrefHeight(double width) {
          return 600;
      }
  }
  </code></pre>
  
  <p>and this is the Exception Log:</p>
  
  <pre><code>    Exception in Application start method
  java.lang.reflect.InvocationTargetException
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:483)
  at     com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:363)
  at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:303)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:483)    
      at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
  Caused by: java.lang.RuntimeException: Exception in Application start method
  at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:875)
  at     com.sun.javafx.application.LauncherImpl.lambda$launchApplication$147(LauncherImpl.java:157)
  at com.sun.javafx.application.LauncherImpl$$Lambda$48/128893786.run(Unknown Source)
  at java.lang.Thread.run(Thread.java:745)
  Caused by: java.lang.NullPointerException: Input stream must not be null
  at javafx.scene.image.Image.validateInputStream(Image.java:1099)
  at javafx.scene.image.Image.&lt;init&gt;(Image.java:684)
  at webviewtest.one.Browser.&lt;init&gt;(WebViewTestOne.java:104)
  at webviewtest.one.WebViewTestOne.start(WebViewTestOne.java:49)
  at     com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$153(LauncherImpl.java:821)    
  at com.sun.javafx.application.LauncherImpl$$Lambda$51/1135703189.run(Unknown Source)
  at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(PlatformImpl.java:323)
  at com.sun.javafx.application.PlatformImpl$$Lambda$45/1051754451.run(Unknown Source)
  at com.sun.javafx.application.PlatformImpl.lambda$null$164(PlatformImpl.java:292)
  at com.sun.javafx.application.PlatformImpl$$Lambda$47/135339377.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(PlatformImpl.java:291)
  at com.sun.javafx.application.PlatformImpl$$Lambda$46/1775282465.run(Unknown Source)
  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$141(WinApplication.java:102)
  at com.sun.glass.ui.win.WinApplication$$Lambda$37/1109371569.run(Unknown Source)
  ... 1 more
  Exception running application webviewtest.one.WebViewTestOne
  Java Result: 1
  </code></pre>