当前位置: 首页 > 知识库问答 >
问题:

用2+个模块在本地运行GWT

子车睿
2023-03-14

lipse插件尝试“本地”运行一个新的Web应用程序(从Eclipse内部,使用内置的Jetty容器)。我正在遵循本GWT教程中的说明,并遇到了一些问题,大概是因为我如何定义模块。

我有一个具有以下目录结构的Web应用程序项目:

MyWebApp/
    src/
        com.mywebapp.client.modules
            WebModule
            AppModule
            WebModule.gwt.xml
            AppModule.gwt.xml
    war/
        WEB-INF/
            lib/
            web.xml
    css/
        web-module.css
        app-module.css
    hmtl/
        web-module-host-page.html
        app-module-host-page.html

我希望我的应用程序有两个模块:webmodule,即“公共网站”,以及当用户进入http://mywebapp.com时加载的模块,然后还有appmodule,仅在用户登录后下载,并包含站点的“私有应用程序”功能。

public class WebModule implements EntryPoint {
    Label label = new Label("Hello, GWT!");

    @Override
    public void onModuleLoad() {
        RootPanel.get().add(label);
    }
}

webmodule.gwt.xml:

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to="web-module">
    <inherits name="com.google.gwt.user.User"/>
    <inherits name="com.google.gwt.user.theme.standard.Standard"/>
    <entry-point class="com.mywebapp.client.modules.WebModule"/>
    <source path='client'/>
    <source path='shared'/>
</module>

web.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    version="2.5"
    xsi:schemaLocation=
        "http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <welcome-file-list>
        <welcome-file>web-module-host-page.html</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>SystemServiceServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value/>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>SystemServiceServlet</servlet-name>
        <url-pattern>/_ah/spi/*</url-pattern>
    </servlet-mapping>
</web-app>

web-module-host-page.html:

<!doctype html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link type="text/css" rel="stylesheet" href="css/web-module.css">
    <title>Hello, GWT!</title>
    <script type="text/javascript" language="javascript" src="mywebapp/mywebapp.nocache.js"></script>
</head>

<body>
    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
    <noscript>
        Turn on javascript!
    </noscript>
</body>
</html>
Run Configurations
    Main tab
        Main class: com.google.gwt.dev.DevMode
    Server tab
        "Run built-in server" is checked at Port 8888
    GWT tab
        Code server port: 9997
        Available modules:
            AppModule - com.mywebapp.client.modules.AppModule
            WebModule - com.mywebapp.client.modules.WebModule
    Arguments tab - see below

-ddatastore.default_high_rep_job_policy_unapplied_job_pct=50-xmx512m-javaagent://home/myuser/sandbox/workbench/google/gae-sdk/1.7.1/appengine-java-sdk-1.7.1/lib/agent/appengine-agent.jar

当我尝试运行这个配置时,我得到以下控制台输出:

Loading modules
    com.mywebapp.client.modules.WebModule
    [ERROR] Invalid name 'web-module'
    [ERROR] Failure while parsing XML
com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)
    at com.google.gwt.dev.cfg.ModuleDefSchema$NullableNameAttrCvt.convertToArg(ModuleDefSchema.java:1048)
    at com.google.gwt.dev.util.xml.HandlerArgs.convertToArg(HandlerArgs.java:64)
    at com.google.gwt.dev.util.xml.HandlerMethod.invokeBegin(HandlerMethod.java:221)
    at com.google.gwt.dev.util.xml.ReflectiveParser$Impl.startElement(ReflectiveParser.java:294)
    at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
    at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at com.google.gwt.dev.util.xml.ReflectiveParser$Impl.parse(ReflectiveParser.java:347)
    at com.google.gwt.dev.util.xml.ReflectiveParser$Impl.access$200(ReflectiveParser.java:68)
    at com.google.gwt.dev.util.xml.ReflectiveParser.parse(ReflectiveParser.java:418)
    at com.google.gwt.dev.cfg.ModuleDefLoader.nestedLoad(ModuleDefLoader.java:296)
    at com.google.gwt.dev.cfg.ModuleDefLoader$1.load(ModuleDefLoader.java:198)
    at com.google.gwt.dev.cfg.ModuleDefLoader.doLoadModule(ModuleDefLoader.java:324)
    at com.google.gwt.dev.cfg.ModuleDefLoader.loadFromClassPath(ModuleDefLoader.java:156)
    at com.google.gwt.dev.DevModeBase.loadModule(DevModeBase.java:992)
    at com.google.gwt.dev.DevMode.loadModule(DevMode.java:557)
    at com.google.gwt.dev.DevMode.doStartup(DevMode.java:443)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1058)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
    at com.google.gwt.dev.DevMode.main(DevMode.java:311)
    [ERROR] Unexpected error while processing XML
com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)
    at com.google.gwt.dev.util.xml.ReflectiveParser$Impl.parse(ReflectiveParser.java:371)
    at com.google.gwt.dev.util.xml.ReflectiveParser$Impl.access$200(ReflectiveParser.java:68)
    at com.google.gwt.dev.util.xml.ReflectiveParser.parse(ReflectiveParser.java:418)
    at com.google.gwt.dev.cfg.ModuleDefLoader.nestedLoad(ModuleDefLoader.java:296)
    at com.google.gwt.dev.cfg.ModuleDefLoader$1.load(ModuleDefLoader.java:198)
    at com.google.gwt.dev.cfg.ModuleDefLoader.doLoadModule(ModuleDefLoader.java:324)
    at com.google.gwt.dev.cfg.ModuleDefLoader.loadFromClassPath(ModuleDefLoader.java:156)
    at com.google.gwt.dev.DevModeBase.loadModule(DevModeBase.java:992)
    at com.google.gwt.dev.DevMode.loadModule(DevMode.java:557)
    at com.google.gwt.dev.DevMode.doStartup(DevMode.java:443)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1058)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)
    at com.google.gwt.dev.DevMode.main(DevMode.java:311)
    [ERROR] shell failed in doStartup method

任何GWT专家都能发现我的配置是错误的(并解释原因!)吗?这里的异常/错误输出没有很好的描述性。

暂时还没有答案

 类似资料:
  • 我刚开始使用SAM使用AWS serverless,遇到以下问题: SAM调用似乎找不到我的lambda处理程序正在导入的python模块,但我可以导入该模块。 我的项目结构如下: 根目录/ mymodulename/ mymodule.py sam/ test_event.json 我在python3.6虚拟环境中工作,并使用安装工具安装了python包(mymodulename): 因此,如果

  • 以下是在远程主机上安装PIP/BOTO的任务,这些任务在运行route53模块时不会再出现错误:

  • 问题内容: 我使用Node.JS和Socket.IO创建了一个简单的聊天应用程序,在本地一切正常,但是当我将其推送到heroku时,它给了我一个应用程序错误,当我检查日志时,这是错误: 因此,我发现indexof是Socket.IO使用的模块,它位于我的node_modules文件夹中,但是由于某种原因,它没有被推送到heroku或只是未被识别。我将模块重新安装了5-6次,并重新创建了应用程序,但

  • 问题内容: 许多第三方Python模块都有一个属性,该属性保存该模块的版本信息(通常类似或),但有些则不然。 此类模块的特定示例是libxslt和libxml2。 我需要检查这些模块在运行时是否使用了正确的版本。有没有办法做到这一点? 潜在的解决方案是在运行时读取源代码,对其进行哈希处理,然后将其与已知版本的哈希进行比较,但这很讨厌。 有更好的解决方案吗? 问题答案: 我会远离哈希。正在使用的li

  • 本地运行模式 本地运行模式主要用于测试功能是否正确。目前本地运行模式仅支持一个Worker(可以有多个Task)和一个PS。可以通过配置选项angel.deploy.mode来使用本地运行模式,具体的参数配置可参考Angel系统参数 1. 运行环境准备 Java >= 1.8 Angel发布包 angel-\-bin.zip 配置好HADOOP_HOME和JAVA_HOME环境变量,解压Angel

  • 我习惯于做出反应并执行以使我的应用程序在本地运行。但是,当我在新项目上运行该脚本时,它会提示没有开始脚本。经进一步检查,没有。 如果这是我的的样子,我如何让它在本地运行? 这是一个Laravel环境,后端使用PHP,前端使用Vue。我觉得自己真的很愚蠢,因为我不知道这一点,但当我搜索时,我也没有找到任何东西。 我正在使用PhpStorm,我下载了XAMPP、Composer和PHP。我不确定我错过