no ok ho capito dove sbagliavo.
non so perchè avevo fatto così.

la correzione:
codice:
public class ControllerMain {

    private ReadJson jsonRead = new ReadJson();

    @FXML
private TableView tblBooks;

    @FXML
private TextField txtSearch;

    @FXML
public void initialize() {
        try {
            List<Book> listBooks = jsonRead.readJson(new File(UrlAndPath.JSON_AUTORI), Book.class);
            ObservableList<Book> list = FXCollections.observableArrayList(listBooks);
            tblBooks.getColumns().setAll(TableColumns.setcols());
            tblBooks.setItems(list);
} catch (IOException ex) {
            GenericDialog.showDialog(ex.getMessage(), Alert.AlertType.ERROR);
        }
    }
}