Java GWT出现奇怪的意外错误,雨伞异常

Java GWT出现奇怪的意外错误,雨伞异常,java,eclipse,google-chrome,gwt,gwt-rpc,Java,Eclipse,Google Chrome,Gwt,Gwt Rpc,我正在通过GWT和Eclipse构建一个项目,以实现一个类似于Yahoo Answer的站点,直到几天前它还运行得很好,但从昨天开始,我注意到了一个我以前没有看到的bug,这非常奇怪,因为我会注意到。基本上,在Google Chrome的控制台上,当我试图可视化与问题相关的答案时,我收到了一个未捕获的错误,似乎数据库(mapdb 1.0.9)没有返回任何东西 对于兼容性问题,我使用EclipseMarsforJava7(1.7)和GWT2.8.0 我将通过点击问题来发布代码中没有被复制的部分

我正在通过GWT和Eclipse构建一个项目,以实现一个类似于Yahoo Answer的站点,直到几天前它还运行得很好,但从昨天开始,我注意到了一个我以前没有看到的bug,这非常奇怪,因为我会注意到。基本上,在Google Chrome的控制台上,当我试图可视化与问题相关的答案时,我收到了一个未捕获的错误,似乎数据库(mapdb 1.0.9)没有返回任何东西

对于兼容性问题,我使用EclipseMarsforJava7(1.7)和GWT2.8.0 我将通过点击问题来发布代码中没有被复制的部分

  public class MostraRisposte {

private VerticalPanel verticalPanel = null;


public MostraRisposte(VerticalPanel verticalPanel) {
    this.verticalPanel = verticalPanel;
}

public void onModuleLoad(Domanda currentSelection) {

    this.verticalPanel.add(new HTML("<br>"));
    this.verticalPanel.add(new HTML("<br>"));
    final Grid answerGridPanel = new Grid(8, 2);
    answerGridPanel.setWidget(0, 0, new Label("Utente: "));
    answerGridPanel.setWidget(0, 1, new Label(currentSelection.getUserName()));
    answerGridPanel.setWidget(1, 0, new Label("Testo:  "));
    answerGridPanel.setWidget(1, 1, new Label(currentSelection.getText()));
    answerGridPanel.setWidget(2, 0, new Label("Data: "));
    answerGridPanel.setWidget(2, 1, new Label(currentSelection.getDay()));
    answerGridPanel.setWidget(4, 0, new Label("Link1: "));
    answerGridPanel.setWidget(4, 1, new Label(currentSelection.getLinkList().get(0)));
    answerGridPanel.setWidget(5, 0, new Label("Link2: "));
    answerGridPanel.setWidget(5, 1, new Label(currentSelection.getLinkList().get(1)));
    answerGridPanel.setWidget(6, 0, new Label("Link3: "));
    answerGridPanel.setWidget(6, 1, new Label(currentSelection.getLinkList().get(2)));
    answerGridPanel.setWidget(7, 0, new Label("Link4: "));
    answerGridPanel.setWidget(7, 1, new Label(currentSelection.getLinkList().get(3)));
    this.verticalPanel.add(answerGridPanel);
    final GwaServiceAsync gwanswer = GWT.create(GwaService.class);
    final int id = currentSelection.getIdQuestion();
    gwanswer.ordinaRisposte(id, new AsyncCallback<List<Risposta>>() {

        @Override
        public void onFailure(Throwable caught) {
            PopupPanel popup = new PopupPanel(true);
            popup.setWidget(new HTML("<font color='red'>Errore</font>"));
            popup.center();
        }

        @Override
        public void onSuccess(List<Risposta> response) {
            final CellTable<Risposta> questionsTable = new CellTable<>(20);
            questionsTable.addColumn(new TextColumn<Risposta>() {
                @Override
                public String getValue(Risposta risposta) {
                    return risposta.getText();
                }
            }, "Risposta");
            questionsTable.addColumn(new TextColumn<Risposta>() {
                @Override
                public String getValue(Risposta answer) {
                    return answer.getUserName();
                }
            }, "Utente");
            questionsTable.addColumn(new TextColumn<Risposta>() {
                @Override
                public String getValue(Risposta risposta) {
                    return risposta.getDay();
                }
            }, "Giorno");
            questionsTable.addColumn(new TextColumn<Risposta>() {
                @Override
                public String getValue(Risposta risposta) {
                    return risposta.getTime();
                }
            }, "Ora");
            questionsTable.addColumn(new TextColumn<Risposta>() {
                @Override
                public String getValue(Risposta risposta) {
                    return risposta.getJudgeEmail();
                }
            }, "Giudice");
            final TextColumn<Risposta> ratingTextColumn = new TextColumn<Risposta>() {
                @Override
                public String getValue(Risposta risposta) {
                    return risposta.getRating();
                }
            };
            questionsTable.addColumn(ratingTextColumn, "Voto");
            ratingTextColumn.setSortable(true);
            questionsTable.addColumn(new TextColumn<Risposta>() {
                @Override
                public String getValue(Risposta risposta) {
                    return risposta.getLinkList().get(0);
                }
            }, "Link");
            questionsTable.addColumn(new TextColumn<Risposta>() {
                @Override
                public String getValue(Risposta risposta) {
                    return risposta.getLinkList().get(1);
                }
            }, "Link");
            questionsTable.addColumn(new TextColumn<Risposta>() {
                @Override
                public String getValue(Risposta risposta) {
                    return risposta.getLinkList().get(2);
                }
            }, "Link");
            questionsTable.addColumn(new TextColumn<Risposta>() {
                @Override
                public String getValue(Risposta risposta) {
                    return risposta.getLinkList().get(3);
                }
            }, "Link");
            final ListDataProvider<Risposta> dataProvider = new ListDataProvider<>();
            dataProvider.addDataDisplay(questionsTable);
            final List<Risposta> list = dataProvider.getList();
            for (Iterator<Risposta> iterator = response.iterator(); iterator.hasNext();) {
                final Risposta risposta = iterator.next();
                list.add(risposta);
            }
            final ListHandler<Risposta> columnSortHandler = new ListHandler<>(list);
            columnSortHandler.setComparator(ratingTextColumn, new Comparator<Risposta>() {
                @Override
                public int compare(Risposta option1, Risposta option2) {
                    if (option1.getRating().equals(option2.getRating())) {
                        if (!option1.getDate().after(option2.getDate())) {
                            return -1;
                        } else {
                            return 1;
                        }
                    } else {
                        return (option2 != null && option1 != null) ? option1.getRating().compareTo(option2.getRating())
                                : 1;
                    }
                }
            });
            questionsTable.addColumnSortHandler(columnSortHandler);
            questionsTable.getColumnSortList().push(ratingTextColumn);
            questionsTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
            final SingleSelectionModel<Risposta> selectionModel = new SingleSelectionModel<>();
            questionsTable.setSelectionModel(selectionModel);
            selectionModel.addSelectionChangeHandler(new Handler() {
                @Override
                public void onSelectionChange(SelectionChangeEvent event) {
                    if (UtenteAttuale.accountType == 1) {
                        final Risposta currentSelection1 = selectionModel.getSelectedObject();
                        if (currentSelection1 != null) {
                            final AggiungiVoto iv = new AggiungiVoto(MostraRisposte.this.verticalPanel);
                            iv.onModuleLoad(currentSelection1);
                        }
                    }
                }
            });
            questionsTable.setRowCount(response.size(), true);
            questionsTable.setRowData(0, response);
            MostraRisposte.this.verticalPanel.add(questionsTable);
        }
    });
}
公共类MostraRisposte{
私有VerticalPanel VerticalPanel=null;
公共MostraRisposte(垂直面板垂直面板){
this.verticalPanel=verticalPanel;
}
模块加载时的公共无效(Domanda currentSelection){
this.verticalPanel.add(新HTML(“
”); this.verticalPanel.add(新HTML(“
”); 最终网格应答GridPanel=新网格(8,2); setWidget(0,0,新标签(“utete:”); setWidget(0,1,新标签(currentSelection.getUserName()); setWidget(1,0,新标签(“Testo:”); setWidget(1,1,新标签(currentSelection.getText()); setWidget(2,0,新标签(“数据”); setWidget(2,1,新标签(currentSelection.getDay()); setWidget(4,0,新标签(“Link1:”); setWidget(4,1,新标签(currentSelection.getLinkList().get(0)); setWidget(5,0,新标签(“Link2:”); setWidget(5,1,新标签(currentSelection.getLinkList().get(1)); setWidget(6,0,新标签(“Link3:”); setWidget(6,1,新标签(currentSelection.getLinkList().get(2)); setWidget(7,0,新标签(“Link4:”); setWidget(7,1,新标签(currentSelection.getLinkList().get(3)); this.verticalPanel.add(answerGridPanel); 最终GwaServiceAsync gwanswer=GWT.create(GwaService.class); final int id=currentSelection.getIdQuestion(); gwanswer.ordinaRisposte(id,新的AsyncCallback(){ @凌驾 失败时的公共无效(可丢弃){ PopupPanel popup=新的PopupPanel(真); setWidget(新的HTML(“错误”)); popup.center(); } @凌驾 成功时公共无效(列表响应){ 最终细胞表问题稳定=新细胞表(20); questionsTable.addColumn(新的TextColumn(){ @凌驾 公共字符串getValue(Risposta Risposta){ 返回risposta.getText(); } }"Risposta";; questionsTable.addColumn(新的TextColumn(){ @凌驾 公共字符串getValue(Risposta应答){ 返回answer.getUserName(); } }“中尉”); questionsTable.addColumn(新的TextColumn(){ @凌驾 公共字符串getValue(Risposta Risposta){ 返回risposta.getDay(); } }“Giorno”); questionsTable.addColumn(新的TextColumn(){ @凌驾 公共字符串getValue(Risposta Risposta){ 返回risposta.getTime(); } }“Ora”); questionsTable.addColumn(新的TextColumn(){ @凌驾 公共字符串getValue(Risposta Risposta){ 返回risposta.getJudgeEmail(); } }“Giudice”); 最终文本列分级文本列=新文本列(){ @凌驾 公共字符串getValue(Risposta Risposta){ 返回risposta.getRating(); } }; addColumn(ratingTextColumn,“Voto”); ratingTextColumn.setSortable(真); questionsTable.addColumn(新的TextColumn(){ @凌驾 公共字符串getValue(Risposta Risposta){ 返回risposta.getLinkList().get(0); } }“链接”); questionsTable.addColumn(新的TextColumn(){ @凌驾 公共字符串getValue(Risposta Risposta){ 返回risposta.getLinkList().get(1); } }“链接”); questionsTable.addColumn(新的TextColumn(){ @凌驾 公共字符串getValue(Risposta Risposta){ 返回risposta.getLinkList().get(2); } }“链接”); questionsTable.addColumn(新的TextColumn(){ @凌驾 公共字符串getValue(Risposta Risposta){ 返回risposta.getLinkList().get(3); } }“链接”); final ListDataProvider dataProvider=新ListDataProvider(); dataProvider.addDataDisplay(questionsTable); final List=dataProvider.getList(); for(Iterator Iterator=response.Iterator();Iterator.hasNext();){ final Risposta Risposta=iterator.next(); 列表。添加(RISPASTA); } final ListHandler columnSortHandler=新ListHandler(列表); setComparator(ratingTextColumn,new Comparator()){ @凌驾 公共整数比较(Risposta选项1、Risposta选项2){ if(option1.getRating().equals(option2.getRating())){ 如果(!option1.getDate()。在(option2.getDate())之后){ 返回-1; }否则{ 返回1;
GWT.setUncaughtExceptionHandler(e -> showError(e));
Throwable unwrapped = unwrap(e); 
GWT.log("Uncaught exception catched", unwrapped);


/**
 * Unwrap the given exception.
 * @param e The exception.
 * @return Unwrapped version of the exception
 */
private static Throwable unwrap(Throwable e)
{
   if (e instanceof UmbrellaException)
   {
      UmbrellaException ue = (UmbrellaException) e;
      if (ue.getCauses().size() == 1)
      {
         return unwrap(ue.getCauses().iterator().next());
      }
   }
   return e;
}