Auf Thema antworten

Hallo ich habe eine invocation target exception wenn ich folgendes versuche:

Es gibt 2 programme

1. erstellt eine erstellt ein SceneExtension extends StackPane implements Seriazible Objekt

1.1 erstellt das Objekt und schreibt es durch einen ObjektOutputStream in eine .txt datei


2. das zweite Program sollte das Objekt einlesen und in einen Node casten

2.1 der FileInputStream findet die richtige Datei

2.2 der ObjectInputStream vom FileInputStream can das Objekt nicht lesen

Code vom 2.ten Programm


        FileInputStream fis = new FileInputStream("mainMenueObject.txt");

    

        ObjectInputStream ois = new ObjectInputStream(fis);  // hier passiert der Fehler -> invocationTargetException

        System.out.println(ois.readObject());

        //Node mainMenue = (Node) (ois.readObject());

                ois.close();


Code vom 1.sten Programm

    public static void main(String[] args) throws Exception {

        SceneExtension rootStackPane = new SceneExtension();

         FileOutputStream fos = new FileOutputStream("mainMenueObject.txt");

         ObjectOutputStream oos = new ObjectOutputStream(fos);

         oos.writeObject(rootStackPane);

         oos.close();

        // launch(args);

    }


Das scene extension Objekt was im 1.sten Programm erzeugt wird


class SceneExtension extends StackPane implements java.io.Serializable{

    public SceneExtension() throws Exception {

        this.getStylesheets().add(new File("style.css").toURI().toURL().toExternalForm());

        // 1. Set Background Image

        ImageView imageV = new ImageView(new Image("mainMenueWallPaper.jpg"));

        this.getChildren().add(imageV);

        // gp necessary for center Vbox -> idk why

        GridPane gp = new GridPane();

        VBox menueBox = new VBox();

        Button playButton = new Button("Play");

        Button deckButton = new Button("Deck");

        Button shopButton = new Button("Shop");

        Button closeButton    = new Button("Exit");

        menueBox.getChildren().addAll(playButton, deckButton,shopButton,closeButton);

        menueBox.setAlignment(Pos.CENTER);

        menueBox.setSpacing(10);

        VBox.setMargin(closeButton, new Insets(30));

        gp.getChildren().add(menueBox);

        gp.setAlignment(Pos.CENTER);

        this.getChildren().add(gp);

        SceneExtension.setAlignment(gp, Pos.CENTER);

    

        // 1. EventHandler: closeButton -> close Program (System.exit(0)) + disconnect acc

        closeButton.setOnAction(event->{

            // closes Program

            System.exit(0);

            // disconnects from server

        });


        playButton.setOnAction(event->{

        });

    

        // opens the deckMenue Object GUI

        shopButton.setOnAction(event->{

        });

    }

        public void setNewScene(StackPane rootStackPane,Node newScene) {

            // get the scene where i want to be

            rootStackPane.getChildren().remove(0);

            rootStackPane.getChildren().add(newScene);

            // set the current scene to null -> set new scene

        }

}


Das ist das outputStreamObject Ergebnis



Oben