Eclipse 作为Java应用程序进行调试-onModuleLoad()错误
我正在试着调试一个已经设计好了某种登录页面的现有应用程序。但是,当我在Eclipse中转到“作为Java应用程序运行”时,我收到一个错误:Eclipse 作为Java应用程序进行调试-onModuleLoad()错误,eclipse,debugging,google-app-engine,gwt,Eclipse,Debugging,Google App Engine,Gwt,我正在试着调试一个已经设计好了某种登录页面的现有应用程序。但是,当我在Eclipse中转到“作为Java应用程序运行”时,我收到一个错误: 01:18:30.207 [ERROR] [pzflex_test] Unable to load module entry point class com.wai.pzflex.client.PZFlex_Test (see associated exception for details) java.lang.AssertionError: null
01:18:30.207 [ERROR] [pzflex_test] Unable to load module entry point class com.wai.pzflex.client.PZFlex_Test (see associated exception for details)
java.lang.AssertionError: null
at com.google.gwt.user.client.ui.TextBox.wrap(TextBox.java:63)
at com.wai.pzflex.client.PZFlex_Test.onModuleLoad(PZFlex_Test.java:60)
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.ModuleSpace.onLoad(ModuleSpace.java:396)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Unknown Source)
下面是我试图使用Eclipse调试的代码
public void onModuleLoad()
{
try
{
HTMLPanel panel = new HTMLPanel("<table align='center'><tr>" +
"<td colspan='2' style='font-weight:bold;'>Please enter your username and password:</td>" +
"</tr><tr><td>Username: </td><td><input type='text' id='loginuser'></td></tr>" +
"<tr><td>Password: </td><td><input type='password' id='loginpass'></td></tr>" +
"<tr><td colspan='2' align='right'><button id='loginbutton'>Login</button></td>" +
"</tr></table>");
//final - entity that cannot be changed later
final TextBox username = TextBox.wrap(panel.getElementById("loginuser"));
final TextBox pass = TextBox.wrap(panel.getElementById("loginpass"));
RootPanel.get("content").add(panel);
模块加载()上的公共void
{
尝试
{
HTMLPanel=新HTMLPanel(“”+
“请输入您的用户名和密码:”+
“用户名:”+
“密码:”+
“登录”+
"");
//最终-以后无法更改的实体
最终TextBox用户名=TextBox.wrap(panel.getElementById(“loginuser”);
最终TextBox pass=TextBox.wrap(panel.getElementById(“loginpass”);
RootPanel.get(“内容”).add(面板);
应用程序似乎一直运行到“final Textbox..”代码行,但当我按resume时,就会出现错误
奇怪的是,我可以进行GWT编译,并且登录页面似乎加载良好。我不明白为什么在调试它时会发生这种情况
同样,我对Java和整个GWT/GAE都是新手,因此任何建议都将不胜感激。调试并检查
panel.getElementById(“loginuser”)
,panel.getElementById(“loginpass”)
RootPanel.get(“内容”)
返回null或不返回null…如果为null,请在html文件中创建一个id为的div看看失败的断言是什么:
(来源:)
这意味着您需要在TextBox.wrap()之前RootPanel.get(“content”).add(panel);
除非它也不起作用。它稍后会失败,因为包装的元素在小部件中(即HTMLPanel
)
您需要做的是从HTML字符串中删除
,并将ID添加到
,像普通小部件一样构建文本框和密码框,然后使用将它们放入HTMLPanel
中的
中
根据需要执行的操作,您可能不需要将
作为小部件,在这种情况下,只需在HTMLPanel
上使用getElementById
,并可能将结果转换为一个cast()
。这不是NullPointerException
,而是一个AssertionError
,没有提供特定消息(因此,null
)。
public static TextBox wrap(Element element) {
// Assert that the element is attached.
assert Document.get().getBody().isOrHasChild(element);