【问题标题】:Getting started with the SuperDevModeSuperDevMode 入门
【发布时间】:2012-07-06 06:06:51
【问题描述】:

我只想使用 superDevMode 运行一个简单的应用程序来了解它的好处。 CodeServer 已成功启动,但它抱怨在 UI 中没有要编译的 gwt 模块。我按照以下步骤操作。

  1. 我从创建新项目时生成的 GWT 默认代码开始。然后我将其转换为 Maven 项目。
  2. 然后我修改了我的 gwt.xml 文件以添加链接器。这是我的 gwt.xml 的副本

    <module rename-to='superdevmode'>
    <inherits name='com.google.gwt.user.User' />
    <inherits name='com.google.gwt.user.theme.clean.Clean' />
    <entry-point class='superDevMode.client.SuperDevMode' />
    <add-linker name="xsiframe" />
    <set-configuration-property name="devModeRedirectEnabled"
    value="true" />
    </module>
    
  3. 我添加了 codeserver jar 并设置了正确的类路径。

Codeserver 启动成功。

   The code server is ready.
   Next, visit: http://localhost:9876/

当我启动 UI 时,我得到以下信息

但是当我点击 Dev Mode On 时,我得到以下信息

我不知道我做错了什么。我的 POM 条目如下所示。

              <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>superDevMode</groupId>
<artifactId>superDevMode</artifactId>
<version>0.0.1-SNAPSHOT</version>
             </project>

如果我错了,请纠正我。

【问题讨论】:

  • 您现在可能想通了或放弃了,但我回答了这个问题,并向其他正在苦苦挣扎的人提供了完整的支持。在您的情况下,您需要执行第 3 步 - 这意味着运行两个 Web 服务器(一个是 superdevmode 代码服务器,另一个提供您的典型项目 html 文件,就像您运行常规 gwt 应用程序一样)

标签: gwt


【解决方案1】:

更新:v2.6 看起来将有一个更好的 superdevmode 示例启动器(请参阅 superdevmode 下的http://www.gwtproject.org/release-notes.html#Release_Notes_2_6_0_RC1) 2.6 将在任何一天发布。我正在使用 RC3,它似乎很好。更多内容:


虽然我很欣赏 Thomas 的文章中SuperDevMode 工作原理的详细信息,但真正需要的是包含一些故障排除的分步指南。

这里是一步一步的。有很多地方出错了,SuperDev mode page 不是很具体。希望这能说明问题:

  1. 使用附加行配置您的模块 .gwt.xml 文件(您应该将其放在模块定义的底部,即在 &lt;/module&gt; 之前):
<add-linker name="xsiframe"/>
<set-configuration-property name="devModeRedirectEnabled" value="true"/>
<!-- enable source maps -->
<set-property name="compiler.useSourceMaps" value="true" />
  1. 运行标准 GWT 编译过程 - 在 Eclipse 中,这是“GWT 编译项目...” - 这是您在部署 GWT 代码时通常执行的操作。毫无疑问,您也有执行此操作的 maven 或 ant 命令。

  2. 启动您在开发 GWT 代码时通常使用的常规网络服务器。例如,您使用普通 DevMode 的那个。我将其称为 localhost:8888 - 我假设您通常启动的页面是 index.html,因此 http://localhost:8888/index.html 显示您的 GWT 应用程序。 (您通常在该 URL 中可能有 ?gwt.codesvr=127.0.0.1:9997

  3. 启动 SuperDevMode 服务器(有关两种方法,请参阅此答案的底部)。您现在有两个网络服务器正在运行 - 在不同的端口上。所以,假设 SuperDevMode 在localhost:1234 上运行。在这个答案的底部,我发布了一些启动 SuperDevMode 的方法。

  4. 将浏览器指向 SuperDevMode 服务器,即 http://localhost:1234 。按照说明将两个快捷方式复制到地址栏

  5. 现在,将您的浏览器指向常规网络服务器,http://localhost:8888/index.html - 不要?gwt.codesvr=127.0.0.1:9997 添加到 URL - 这仅适用于 NotSuper DevMode。 (即常规 DevMode)

  6. 单击您在步骤 5 中复制的快捷方式链接“DevMode On”。它应该要求您选择要编译的模块,单击“编译”按钮。

  7. 如果您想要源映射(在 Chrome 脚本浏览器中查看您的 java 源代码),您必须在 Chrome 中打开它。在我的 Chrome 版本(Ubuntu)中,Chrome 控制台的右下角有一个小齿轮(检查元素,然后查看浏览器窗口的右下角)。单击它并找到“启用源映射”。重新加载页面,它现在应该会显示源代码。


启动超级开发模式的两种方式:

从命令行

java -classpath $GWT_HOME/gwt-codeserver.jar:$GWT_HOME/gwt-dev.jar:$GWT_HOME/gwt-user.jar:app:./lib/*  com.google.gwt.dev.codeserver.CodeServer \
  -bindAddress 0.0.0.0 -port 1234 -src src -workDir work com.foo.MyModule

来自 Eclipse Laucher

在 Eclipse 中,使用以下配置创建一个新的 Java 应用程序 启动器(不是 Web 应用程序启动器!):

主类:

com.google.gwt.dev.codeserver.CodeServer

程序参数:

-src src -workDir ${workspace_loc:MyProject}/codeserver -port 1234 com.foo.MyModule

-workDir 是可选的

VM 参数(根据项目的大小可能需要这些参数。如果超级开发模式的“编译”按钮(在浏览器中)在您单击后立即消失并且似乎没有任何反应,则可能是由于内存不足而崩溃)

-Xmx1024m -Xms512m

类路径: 将 gwt-codeserver.jar、gwt-dev.jar 和 gwt-user.jar 添加到启动类路径(这些 jar 文件位于 GWT SDK 安装目录中)。

【讨论】:

  • 那是史诗。您是否有类似的多模块 maven gwt 项目分步指南?
  • 我不知道为什么,但同样的方法在 2.5.1 中对我不起作用,但在 2.6.0 中却完美无缺。还有一个问题,我是否需要始终运行两台服务器?即常规服务器(Web 服务器)和超级开发模式服务器(Java 应用程序)?我只是删除了正常的开发模式服务器并保持超级开发模式运行,但应用程序没有启动。为同一个应用程序运行 2 个服务器有什么意义?
  • 开发时只运行超级开发模式服务器。当你杀死普通服务器时它停止工作的原因是你需要一些网络服务器来处理 index.html
  • 老兄,非常感谢。它使用我的 Maven 插件和所有东西对我有用:)
【解决方案2】:

我采取了稍微不同的方法。我从现有的 Hello project 开始,然后将其配置为在超级开发模式下工作。

A. 为 hello 项目构建和部署 war 到 tomcat 中。

B.在Hello项目的build.xml中添加一个target。

<target name="codeserver" depends="javac" description="Run Code Server mode">
    <java failonerror="true" fork="true" classname="com.google.gwt.dev.codeserver.CodeServer">
        <classpath>
            <pathelement location="src"/>
            <path refid="project.class.path"/>
            <pathelement location="../../gwt-codeserver.jar" />
            <pathelement location="../../validation-api-1.0.0.GA.jar" />
            <pathelement location="../../validation-api-1.0.0.GA-sources.jar" />
        </classpath>
        <jvmarg value="-Xmx1024M"/>
        <arg value="-bindAddress"/>
        <arg value="0.0.0.0"/>
        <arg line="-port"/>
        <arg value="9876"/>
        <arg value="-workDir"/>
        <arg value="workDir"/>
        <arg line="-src"/>
        <arg value="src"/>
        <arg value="com.google.gwt.sample.hello.Hello"/>
    </java>
</target>

C. 在命令提示符下使用ant codeserver 运行代码服务器。

D. 启动浏览器并导航到http://localhost:9876/ 创建书签

E. 启动 Chrome 开发工具 (F12) 并启用 SourceMaps。

F. 启动浏览器并导航到http://localhost:8080/Hello

G.在页面http://localhost:8080/Hello时点击“Dev Mode ON”书签

H.点击“编译”按钮,指示代码服务器将gwt源代码作为源映射加载到浏览器中。

I. 万岁 java 文件被提取,可以在 Chrome 开发控制台的 source 选项卡中看到。

J. 找到 Hello.java 。点击行号设置调试点@Window.alert("Hello, AJAX");

K. 在 Hello World 中点击“Click Me”。代码在 Chrome 中的 java 文件中的 Debug 点停止!!!!!!!!!万岁。

截图参考 - http://geekbybit.blogspot.in/2013/03/diy-working-with-gwt-codeserver-tomcat.html

【讨论】:

    【解决方案3】:

    这里有一个很好的解释: http://blog.ltgt.net/how-does-gwts-super-dev-mode-work/

    您需要将小册子拖到浏览器中。然后像往常一样启动您的应用程序。在没有“?gwt.codesvr=127.0.0.1:9997”部分的浏览器中打开您的应用程序。现在您可以使用小册子启动 SuperDevMode。

    希望这会有所帮助。

    【讨论】:

    • 感谢阿恩的链接! ;-)
    • 我按照文档进行操作,但仍然无法启动应用程序。我的设置如上图。如果您指出我的错误,那将很有帮助
    • 当您单击书签时,您仍然是代码服务器站点之一。你需要在你的 webapp 运行的站点上。对我来说,步骤是: 1. 启动 codeserver 2. 启动 webapp 3. 在浏览器中打开 webapp(通常是端口 8888) 4. 单击 codeserver 书签进行快速编译
    【解决方案4】:

    对于多模块 maven gwt 项目,您需要在运行配置中添加源位置(基础项目和模块):

    -src src/main/java/ -src ${workspace_loc:MyNewModule}/src/main/java/ com.foo.MyModule
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多