GWT Widget Library - 源不可翻译

时间:2017-01-26 14:08:17

标签: java gwt module

我正在尝试创建 GWT 小部件模块。现在,它只有一个小部件,仅用于测试。我尝试将这个模块包含在一个不同的项目中,我得到:

No source code is available for type com.company.gwt.client.components.VerticalDiv; did you forget to inherit a required module?

在我的主项目module.gwt.xml中我有:

<module>
    <!-- Google Modules -->
    <inherits name="com.google.gwt.user.User" />
    <inherits name="com.googlecode.gwt.crypto.Crypto" />

    <inherits name="com.company.gwt.GWT_Library" />

    <entry-point class="com.company.app.client.App" />

    <source path="" />

    <resource path="resources" />

    <!-- Only support recent browsers -->
    <set-property name="user.agent" value="ie10,gecko1_8,safari" />
</module>

GWT_Library xml位于com.company.gwt中,如下所示:

<module>       
    <inherits name="com.google.gwt.user.User" />
    <inherits name="com.google.gwt.resources.Resources" />

    <source path="client" />
    <resource path="client" />
</module>

项目结构:

.
+-- pom.xml
+-- src
|   +-- main
|       +-- java
|           +-- com
|               +-- company
|                   +-- gwt
|                       +-- client
|                           +-- components
|                               +-- VerticalDiv.java
|       +-- resources
|           +-- com
|               +-- company
|                   +-- gwt
|                       +-- GWT_Library.gwt.xml
|                       +-- client

我知道主要项目包括它,因为如果我更改module.gwt.xml中的 inherits 行,它会给我一个错误,它无法找到它。< / p>

这是VerticalDiv类:

package com.company.gwt.client.components;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.FlowPanel;

public class VerticalDiv extends FlowPanel implements HasClickHandlers
{
    public VerticalDiv()
    {
    }

    @Override
    public HandlerRegistration addClickHandler(ClickHandler handler)
    {
        return this.addDomHandler(handler, ClickEvent.getType());
    }
}

这个课曾经在我的主项目中工作,并且在那里工作得很好。我有另一个名为&#34; Shared&#34;的模块,它也可以正常工作。虽然,这个软件包没有任何可以在UiBinder中使用的软件包。我认为这可能是不同的。在UI绑定器中引用VerticalDiv类,如下所示:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
             xmlns:g='urn:import:com.google.gwt.user.client.ui'
             xmlns:e="urn:import:com.company.app.client.widgets"
             xmlns:c="urn:import:com.company.gwt.client.components"
>
    <ui:style>
        <!-- styling -->
    </ui:style>

    <g:HTMLPanel>
        <c:VerticalDiv>
            <e:LinkButton ui:field="viewAll" text="All Notifications"></e:LinkButton>
        </c:VerticalDiv>
    </g:HTMLPanel>
</ui:UiBinder>

正如您所看到的,我还使用了主项目中的小部件,它以这种方式正常工作。

我的模块小部件是否缺少可在UiBinder文件中使用的东西?

2 个答案:

答案 0 :(得分:0)

您需要为“组件”模块创建描述符,例如您的com.company.gwt目录中的MyComponents.gwt.xml。然后你需要在你的主模块xml中继承它:

<inherits name="com.company.gwt.MyComponents"/>

这个MyComponents.gwt.xml可以非常简单(取决于它使用的GWT模块):

<module>

  <inherits name='com.google.gwt.user.User'/>
  <inherits name='com.google.gwt.i18n.I18N'/>
  <inherits name="com.google.gwt.resources.Resources"/>

  <!-- Specify the paths for translatable code                    -->
  <source path='client'/>
  <source path='shared'/>

</module>

答案 1 :(得分:0)

这个错误比预期更准确......

我和maven一起建设,所以为了完成这项工作,我必须:

  1. 生成了一个源jar。所以在widget模块pom.xml中:
  2. <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.0.1</version>
        <executions>
            <execution>
                <id>attach-sources</id>
                <phase>package</phase>
                <goals>
                    <goal>jar-no-fork</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    
    1. 在我的主项目pom.xml中包含源:
    2. <dependency>
          <artifactId>gwt-library</artifactId>
          <groupId>com.company.gwt</groupId>
          <version>1.0.0-SNAPSHOT</version>
      </dependency>
      <dependency>
          <artifactId>gwt-library</artifactId>
          <groupId>com.company.gwt</groupId>
          <version>1.0.0-SNAPSHOT</version>
          <classifier>sources</classifier>
      </dependency>
      

      所以,错误是正确的。源代码确实无法使用。