首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT UiBinder NullPointerException

GWT UiBinder NullPointerException
EN

Stack Overflow用户
提问于 2014-05-26 16:17:01
回答 1查看 991关注 0票数 0

当我尝试使用UiBinder时,我得到了一个NPE。我第一次使用它的时候,效果很好。所以我想我会尝试将另一个页面移到UiBinder,但是我得到了这个异常,但没有解释原因。我已经删除了可能导致任何errors...yet的所有异常仍然存在。这就是我剩下的代码。在我尝试让它使用UiBinder之前,代码工作得很好。它抱怨的第一件事就是我没有一个空的构造函数。我的另一个文件没有either...and,它根本不抱怨那个文件。我不允许在同一个包中使用UiBinder的两个类吗?我不明白为什么其中一个起作用,另一个不起作用。

MalfunctionViewPage.java

代码语言:javascript
复制
import com.google.gwt.core.shared.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;

public class MalfunctionViewPage extends Composite {
    interface MalfunctionViewPageUiBinder extends UiBinder<Widget, MalfunctionViewPage> {}
    private static MalfunctionViewPageUiBinder uiBinder = GWT.create(MalfunctionViewPage.class);

    public MalfunctionViewPage() {
       initWidget(uiBinder.createAndBindUi(this));
    }
}

MalfunctionViewPage.ui.xml

代码语言:javascript
复制
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
TEST
</ui:UiBinder> 

我的哦,非常有帮助的例外:

代码语言:javascript
复制
12:01:15.374 [ERROR] [mypackage.JobWorkbook] Failed to create an instance of 'mypackage.client.MalfunctionViewPage' via deferred binding 

java.lang.NullPointerException: null
at mypackage.client.MalfunctionViewPage.&lt;init&gt;(MalfunctionViewPage.java:13)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:480)
at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
at com.google.gwt.core.shared.GWT.create(GWT.java:72)
at mypackage.client.MalfunctionViewPage.&lt;clinit&gt;(MalfunctionViewPage.java:10)
at mypackage.client.Main.changeScreen(Main.java:223)
at mypackage.client.Main.onValueChange(Main.java:151)
at com.google.gwt.event.logical.shared.ValueChangeEvent.dispatch(ValueChangeEvent.java:128)
at com.google.gwt.event.logical.shared.ValueChangeEvent.dispatch(ValueChangeEvent.java:1)
at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1)
at com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40)
at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193)
at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88)
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127)
at com.google.gwt.user.client.impl.HistoryImpl.fireEvent(HistoryImpl.java:87)
at com.google.gwt.event.logical.shared.ValueChangeEvent.fire(ValueChangeEvent.java:43)
at com.google.gwt.user.client.impl.HistoryImpl.fireHistoryChangedImpl(HistoryImpl.java:94)
at com.google.gwt.user.client.impl.HistoryImpl.newItem(HistoryImpl.java:138)
at com.google.gwt.user.client.History.newItem(History.java:210)
at com.google.gwt.user.client.History.newItem(History.java:195)
at mypackage.client.PageName.switchTo(PageName.java:42)
at mypackage.client.LoginPage$4.onSuccess(LoginPage.java:118)
at mypackage.client.LoginPage$4.onSuccess(LoginPage.java:1)
at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:232)
at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:259)
at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:412)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:284)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:356)
at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Unknown Source)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-26 17:13:46

问题在下面的一行中,参数类名和赋值类型不相同。

代码语言:javascript
复制
private static MalfunctionViewPageUiBinder uiBinder = GWT.create(MalfunctionViewPage.class);

它应该是

代码语言:javascript
复制
private static MalfunctionViewPageUiBinder uiBinder = GWT.create(MalfunctionViewPageUiBinder.class);

完整代码:

代码语言:javascript
复制
public class MalfunctionViewPage extends Composite {
    @UiTemplate("MalfunctionViewPage.ui.xml")
    interface MalfunctionViewPageUiBinder extends UiBinder<Widget, MalfunctionViewPage> {
    }

    private static MalfunctionViewPageUiBinder uiBinder = GWT
            .create(MalfunctionViewPageUiBinder.class);

    public MalfunctionViewPage() {
        initWidget(uiBinder.createAndBindUi(this));
    }
}

在ui.xml中,没有任何外部容器,TEST是无效的。其结果是

代码语言:javascript
复制
ERROR - Unexpected text in element: "TEST": <ui:UiBinder>

尝试使用一些容器,如HTMLPanel。

代码语言:javascript
复制
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
    <g:HTMLPanel>TEST</g:HTMLPanel>
</ui:UiBinder> 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23874178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档