Получение ошибки java.lang.reflect.InvocationTargetException с простым методом get - PullRequest
0 голосов
/ 30 августа 2018

Я пишу почтовый клиент с j = JavaFX. Теперь я пытаюсь записать кнопку ответа и получаю java.lang.reflect.InvocationTargetException, когда пытаюсь найти отправителя электронного письма для ответа. Вот код Replaycontroller:

package project;

import java.io.IOException;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import javafx.fxml.FXML;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import static project.FXMLNewMailController.mittenti;

public class FXMLReplayController implements Initializable {
    @FXML
    private Button Btn_send;
    @FXML
    private TextField Txt_object;
    @FXML
    private TextField Txt_receiver;
    @FXML
    private TextArea Area_text;
    @FXML
    private AnchorPane AP_replace;

    private static String author, send;
    private static Mail mail;
    static String mittenti[] = {"marti.anzo@gmail.it", "andrea.pizza@hotmail.com", "mattia.berni@edu.unito.it"};

    public void setAuthor(String author) {
        this.author = author;
    }
    public String getAuthor() {
        return author;
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        //Txt_receiver.setText(getMessaggio().getSender(); //error

    }

    public void setMessaggio(Mail mail){
        this.mail = mail;
    }
    public Mail getMessaggio(){
        return mail;
    }
}

Txt_receiver.setText(getMessaggio().getSender(); оставьте мне ошибку, если я прокомментирую этот раздел, он работает, но мне нужно, чтобы отправитель успешно воспроизвел сообщение. Метод getMessage() относится к этому классу, метод getSender() объявлен в классе Mail.

Код обработчика кнопки:

private void handleBtnReplay(ActionEvent event) throws IOException{
    System.out.println("Inoltra");
    try{
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("FXMLReplay.fxml"));
        Parent rootRW = (AnchorPane) fxmlLoader.load();
        Stage stage = new Stage();
        stage.setTitle("Replay");

    FXMLReplayController control = fxmlLoader.<FXMLReplayController>getController();
    control.setMessaggio(getMail());
    System.out.println("rispondo a: " + control.getMessaggio());
    System.out.println("destinatario: " + getMail().getSender());

    stage.setScene(new Scene(rootRW));
    stage.show();
}catch (Exception e) {
    System.out.println("errore inoltra: "+ e);
}

}

Я никогда не обнаруживал эту ошибку раньше, и поиск в Интернете, я не могу понять, в чем смысл этих 2 методов get.

...