【问题标题】:Check the inheritance chain from module; it may not be inheriting a required module or a module may not be adding its source path entries properly检查模块的继承链;它可能没有继承所需的模块,或者模块可能没有正确添加其源路径条目
【发布时间】:2013-01-08 13:08:29
【问题描述】:

我想创建一个包含多个 gwt 模块的 gwt maven 项目。其中一些只是实用模块,意味着它们没有入口点。基本上我已经有一个 gwt 项目,其中包含多个 gwt 模块,并且我已将其转换为 maven,但在编译时它给了我以下异常:

[错误] 找不到类型 'in.appops.showcase.web.gwt.uploadservice.client.UploadService' [信息] [ERROR] 提示:以前的编译器错误可能导致了这种类型 不可用 [INFO] [ERROR] 提示:检查继承链 从你的模块;它可能没有继承所需的模块或 模块可能没有正确添加其源路径条目

我的项目有 core 和 dispath 模块,它们是没有入口点的实用程序模块和其他具有继承核心模块的入口点的上传服务模块。

所以我把 core.gwt.xml ,dispatch.get.xml 放在他们的包中,即 src/main/java 本身和 maven 的资源文件夹中的 uploadservice.gwt.xml。 我也在 pom.xml 中提供要编译的模块:

<configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.codehaus.mojo</groupId>
                                    <artifactId>gwt-maven-plugin</artifactId>
                                    <version>2.4.0</version>
                                    <goals>
                                        <goal>clean</goal>
                                        <goal>resources</goal>
                                        <goal>compile</goal>
                                        <goal>i18n</goal>
                                        <goal>generateAsync</goal>
                                    </goals>
                                    <configuration>
                                        <runTarget>Index.html</runTarget>
                                        <hostedWebapp>${webappDirectory}</hostedWebapp>
                                         <modules>
                                            <!-- <module>platform.bindings.web.gwt.dispatch.Dispatch</module>
                                             <module>platform.core.Core</module>   -->
                                            <module>showcase.web.gwt.addressbook.AddressBook</module>
                                            <module>showcase.web.gwt.uploadservice.UploadService</module>
                                        </modules> 
                                    </configuration>
                                </pluginExecutionFilter>
                                <action>
                                    <execute />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>

谁能帮我摆脱这个例外。我是否需要提供编译模块的命令或其他任何东西?

【问题讨论】:

    标签: gwt maven-2


    【解决方案1】:

    注 1 - 使用 gwt 标准方法时,您的文件夹结构

        src/main/java/showcase/web/gwt/yourmodule/yourmodule.gwt.xml
        src/main/java/showcase/web/gwt/yourmodule/client 
        src/main/java/showcase/web/gwt/yourmodule/public 
    
    Your pom references 
        <module>showcase.web.gwt.addressbook.AddressBook</module>
        <module>showcase.web.gwt.uploadservice.UploadService</module>
    
    Your .gwt.xml file location
        src/main/java/showcase/web/gwt/addressbook/AddressBook.gwt.xml
        src/main/java/showcase/web/gwt/uploadservice/UploadService.gwt.xml
    

    注意 2 - &lt;lifecycleMappingMetadata&gt; 用于您的 m2e = maven eclipse 插件。有关 GWT MAVEN POM 示例的清晰示例 - http://code.google.com/p/google-web-toolkit/source/browse/trunk/samples/validation/pom.xml

    注3 - 完全按照gwt maven示例项目的极其简单的例子-http://code.google.com/p/google-web-toolkit/source/browse/trunk/samples/validation/

    请勿更改文件夹位置。 *遵循命名约定。* 甚至像 public、client 这样的文件夹名称也是由 GWT 中的“名称”选择的。

    【讨论】:

    • 但是是否所有的 gwt.xml 都需要在资源文件夹中或您在 java 文件夹中提到的那样。我有点困惑。如果在创建 gwt-maven 项目时我想指定 4 个 gwt 模块,就像我们添加参数模块和值 gwtmodule 名称一样。那么步骤是什么?
    • 我更喜欢谷歌团队将 .gwt.xml 推送到 java 文件夹中的方式。即使是微小的变化也意味着需要额外的努力来维护它、记录它并让其他人理解它。如果您的代码具有明确的包模块化,您应该选择将项目拆分为几个 maven “子模块”
    • 您可以将 .gwt.xml 文件放在 java 文件夹中,但其他 .properies 或 .xml 文件需要放在各自的 src/main/resources 文件夹中,因为当我们打包它时,它可能会给您带来问题因为默认情况下它不会在 war,ear 文件中包含这些资源。 o.w 需要在 pom.xml 中指定
    【解决方案2】:

    如果在加载入口点时出现此错误,您可能需要更改 *.gwt.xml 文件中的标签。

    更改我的包结构后,我能够成功修复错误“检查模块的继承链;它可能没有继承所需的模块或模块可能没有正确添加其源路径条目”。

    • 在您的 .gwt.xml 文件中,在文件底部附近找到源标记。
    • 恢复到较早的工作提交,或打开一个已知的工作项目
    • 请注意工作源代码标签相对于工作项目的包结构所遵循的模式。
    • 前滚到损坏的提交
    • 按照相同的模式修改您的源标签以对应于当前的包结构。


    此外,您应该检查以确保您的 .gwt.xml 文件中有适当的继承标签。例如,如果您尝试使用 SmartGWT 而不使用标签继承 name="com.smartgwt.SmartGWt"

    【讨论】:

      【解决方案3】:

      您的UploadService.gwt.xml 文件应位于src/main/resources/in/appops/showcase/web/gwt/uploadservice。其他 GWT 模块描述符也应该在它们的包中。

      【讨论】:

      • 如果我使用您的方法,我的项目正在运行,但需要维护文件夹结构,我们可以直接在 java 文件夹中使用它。感谢您的帮助。
      猜你喜欢
      • 1970-01-01
      • 2019-09-21
      • 2022-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2021-03-10
      相关资源
      最近更新 更多