G
Gelöschtes Mitglied 65838
Gast
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
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
Anhänge
Zuletzt bearbeitet von einem Moderator: