gpt4 book ai didi

java - 加载简单 GWT View 时出现异常

转载 作者:行者123 更新时间:2023-12-02 00:05:14 24 4
gpt4 key购买 nike

我有一个简单的entrypoint类,它只加载一个面板

    public class TestUI implements EntryPoint
{
PanelA panelA = new PanelA();

public void onModuleLoad()
{
final RootPanel rootPanel = RootPanel.get();

rootPanel.add( panelA );
}
}

这是面板B

        public class PanelB extends HTMLPanel
{
public PanelB()
{
super("Panel B");
final PanelA panelA = new PanelA();
Button btnNewButton = new Button("Go to panel A");
btnNewButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
final RootPanel rootPanel = RootPanel.get();
rootPanel.clear();
rootPanel.add( panelA );
}
});
add(btnNewButton);
}

}

这是面板 A

        public class PanelA extends HTMLPanel
{
public PanelA( )
{
super("Panel A");
final PanelB panelB = new PanelB();
Button btnNewButton = new Button("Go to panel B");
btnNewButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
final RootPanel rootPanel = RootPanel.get();
rootPanel.clear();
rootPanel.add( panelB );
}
});
add(btnNewButton);
}
}

但是,当我尝试加载包含此入口点的页面时,它失败并显示下面的异常跟踪。如果我用纯 HTML 面板替换入口点中对面板 A 的引用,则它可以正常加载。我的简单面板出了什么问题?我基本上是在尝试创建一个 GUI,可以在页面之间来回单击,我认为这将是实现该目标的第一步。

Exception in thread "Code server for stockwatcher from Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 com.google.gwt.dev.shell.BrowserChannel$RemoteDeathError: Remote connection lost
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:536)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at java.io.DataOutputStream.flush(Unknown Source)
at com.google.gwt.dev.shell.BrowserChannel$ReturnMessage.send(BrowserChannel.java:1310)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:533)
... 2 more

最佳答案

您正在引起相互递归或循环依赖调用...这是详分割析...

TestUI 中,您将创建 PanelA 的实例。 创建类的实例时会发生什么?它的构造函数被调用。在这种情况下,PanelA 的构造函数被调用。您将在其中创建 PanelB 的实例,因此会调用 PanelB 的构造函数。现在,您再次在 PanelB 中创建 PanelA 的实例,因此它的构造函数被调用,并且该过程无限重复。更好的编程技术应该避免这种循环依赖。避免这种情况,它将解决您的问题。

关于java - 加载简单 GWT View 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14022347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com