我很抱歉这个模糊的标题,但我真的不知道问题是什么以及我可以在哪里照顾它。我正在创建一个名为test
的项目,让Eclipse生成默认的服务器问候示例。
如果我创建一个GWT项目,右键单击它并执行“GWT Compile”命令,一切正常。然后我的应用程序在http://127.0.0.1:8888/Test.html?gwt.codesvr=127.0.0.1:9997
处可用,并且到目前为止正确显示 -
但只有我去
http://127.0.0.1:8888/Test.html
。出于某种原因,如果我转到http://127.0.0.1:8888/Test.html?gwt.codesvr=127.0.0.1:9997
,即使插件已安装并正在运行,Chrome也会告诉我为GWT安装浏览器插件。
但是,如果我是对代码进行任何更改,例如更改:
public void onModuleLoad() {
// ...
RootPanel.get("nameFieldContainer").add(nameField);
RootPanel.get("sendButtonContainer").add(sendButton);
RootPanel.get("errorLabelContainer").add(errorLabel);
// ...
}
到
public void onModuleLoad() {
// ...
RootPanel.get("nameFieldContainer").add(nameField);
//RootPanel.get("sendButtonContainer").add(sendButton);
RootPanel.get("errorLabelContainer").add(errorLabel);
// ...
}
在生成的Test.java
文件中,更改未反映在网站上。如果我刷新浏览器(Ctrl + F5)或明确清除浏览器历史记录,则不行。
另一个奇怪的是我无法调试Java代码。如果我在onModuleLoad()
的某处设置了一个断点,那么Eclipse就不会就此止步。
如果我是将System.out.println()
放到onModuleLoad()
的第一行我也没有收到该消息..
public void onModuleLoad() {
System.out.println("##########"); // Not working either
// ...
}
在“开发模式”视图中单击Eclipse提供的“重新加载Web服务器”按钮也无济于事。唯一有效的是重新编译整个项目(这需要很长时间),但只有显示的内容才会更新 - 断点不会被击中,.println()
仍然不会输出任何内容。
这真令人沮丧 - 有人知道我做错了什么吗?如果您需要更多信息,请告诉我们。
答案 0 :(得分:0)
如果您想以调试模式运行应用程序(意味着您更改了任何内容并且在重新加载时它开始反映到浏览器中),您必须使用URL http://127.0.0.1:8888/Test.html?gwt.codesvr=127.0.0.1:9997。以上URL显示您的服务器正在以GWT支持的开发模式运行。此服务器的开发模式使您可以调试应用程序。仅使用http://127.0.0.1:8888/Test.html时,它表示您正在使用服务器的Web模式。这不允许您进行调试。因此,您必须重新编译并重新部署应用程序以查看更改。 简而言之,需要GWT开发模式来调试应用程序。这是因为实际上你正在尝试调试javascript,因为你在GWT中编写的所有内容最终都会在GWT编译后转换为javascript。
答案 1 :(得分:0)
不推荐使用GWT DevMode浏览器插件;他们不再在Firefox中工作超过一年,而在Chrome中工作几个月(取决于您的操作系统);唯一支持的浏览器仍然是IE (万一你想知道:Firefox已经削减了对插件所需的一些API的访问权限,Chrome正在关闭对NPAPI插件的支持)
对于一些版本,GWT发布了一个名为SuperDevMode的新DevMode,它在JS中运行您的代码。从GWT 2.7开始,当您启动DevMode时,您实际上正在使用SuperDevMode和新的#34;在加载时编译"模式,除非你明确要求"经典" DevMode通过传递-nosuperDevMode
参数
GWT 2.7附带一个增量编译器,使刷新速度比以前快得多(甚至比某些情况下的#34;经典" DevMode更快),这就是默认情况下开启SuperDevMode的原因。 />
因为代码现在编译为JS,所以不再在IDE中设置断点,而是在浏览器的开发工具中,使用SourceMaps查看Java代码而不是编译的JS。但是plugin for Eclipse使用其远程调试协议连接到Chrome,因此您可以在Eclipse中设置断点;和IntelliJ IDEA有类似的支持
不再需要浏览器插件,但意味着它可以在任何地方运行,包括智能手机
最后,但并非最不重要的是,SuperDevMode(也称为CodeServer)使用特定的一个覆盖您的*.nocache.js
以获得"在加载时编译"行为,因此请确保在部署到您附近的服务器之前重新编译应用程序。