【问题标题】:gwt-maven-plugin javascript compilation errorgwt-maven-plugin javascript编译错误
【发布时间】:2011-05-23 00:16:34
【问题描述】:

我们正在将构建系统迁移到使用 maven。我们项目的其中一个用途是gwt(2.2.0 版)。它在 Eclipse 上编译为 javascript 没有任何错误,但我们在 maven 中遇到了一些问题。

以下是运行“mvn clean package”时的错误信息

[INFO]
[INFO] --- gwt-maven-plugin:2.2.0:compile (default) @ Analytics ---
[INFO] auto discovered modules [com.ivstel.af.AF]
[INFO] Compiling module com.ivstel.af.AF
[INFO]    Validating newly compiled units
[INFO]       [ERROR] Errors in 'jar:file:/C:/Users/Croydon.IVSTEL1/.m2/repository/com/google/gwt/google-apis/gwt-visualization/1.1.1/gwt-visualization-1.1.1.jar
!/com/google/gwt/visualization/client/CommonOptions.java'
[INFO]          [ERROR] Line 61: The method toJsArrayString(String[]) is undefined for the type ArrayHelper
[INFO]       [ERROR] Errors in 'jar:file:/C:/Users/Croydon.IVSTEL1/.m2/repository/com/google/gwt/google-apis/gwt-visualization/1.1.1/gwt-visualization-1.1.1.jar
!/com/google/gwt/visualization/client/DataTable.java'
[INFO]          [ERROR] Line 140: The method toJsArrayInteger(int[]) is undefined for the type ArrayHelper
[INFO]       [ERROR] Errors in 'jar:file:/C:/Users/Croydon.IVSTEL1/.m2/repository/com/google/gwt/google-apis/gwt-visualization/1.1.1/gwt-visualization-1.1.1.jar
!/com/google/gwt/visualization/client/DataView.java'
[INFO]          [ERROR] Line 62: The method toJsArrayInteger(int[]) is undefined for the type ArrayHelper
[INFO]          [ERROR] Line 74: The method toJsArrayInteger(int[]) is undefined for the type ArrayHelper
[INFO]          [ERROR] Line 82: The method toJsArrayInteger(int[]) is undefined for the type ArrayHelper
[INFO]          [ERROR] Line 94: The method toJsArrayInteger(int[]) is undefined for the type ArrayHelper
[INFO]       [ERROR] Errors in 'jar:file:/C:/Users/Croydon.IVSTEL1/.m2/repository/com/google/gwt/google-apis/gwt-visualization/1.1.1/gwt-visualization-1.1.1.jar
!/com/google/gwt/visualization/client/VisualizationUtils.java'
[INFO]          [ERROR] Line 30: The method toJsArrayString(String[]) is undefined for the type ArrayHelper
[INFO]          [ERROR] Line 44: The method toJsArrayString(String[]) is undefined for the type ArrayHelper

但是,jar in question 确实在 gwt-visualization-1.1.1.jar\com\google\gwt\ajaxloader\client\ArrayHelper.java 中包含函数 toJsArrayInteger

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">

  <!-- POM file generated with GWT webAppCreator -->
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ivstel.analytics</groupId>
  <artifactId>Analytics</artifactId>
  <packaging>war</packaging>
  <version>1</version>
  <name>Analytics</name>

  <properties>
    <!-- Convenience property to set the GWT version -->
    <gwtVersion>2.2.0</gwtVersion>

    <!-- GWT needs at least java 1.5 -->
    <maven.compiler.source>1.5</maven.compiler.source>
    <maven.compiler.target>1.5</maven.compiler.target>
    <webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- Shared version number properties -->
    <com.google.gwt.version>${gwtVersion}</com.google.gwt.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-servlet</artifactId>
      <version>${com.google.gwt.version}</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <version>${com.google.gwt.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>com.google.gwt.google-apis</groupId>
      <artifactId>gwt-maps</artifactId>
      <version>1.0.4</version>
    </dependency>

    <dependency>
      <groupId>com.google.gwt.google-apis</groupId>
      <artifactId>gwt-visualization</artifactId>
      <version>1.1.1</version>
    </dependency>

    <dependency>
      <groupId>org.gwtmultipage</groupId>
      <artifactId>gwtmultipage-core</artifactId>
      <version>1.0.0.Beta5</version>
    </dependency>

    <!-- Other dependencies ....... -->

  </dependencies>

  <build>
    <!-- Generate compiled stuff in the folder used for developing mode -->
    <outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>

    <plugins>

      <!-- GWT Maven Plugin -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>2.2.0</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>test</goal>
              <goal>i18n</goal>
              <!-- http://stackoverflow.com/questions/3611775/gwt-maven-eclipse-plugin-compilation-fails-due-to-duplicate-class -->
              <!-- <goal>generateAsync</goal> -->
            </goals>
          </execution>
        </executions>
        <!-- Plugin configuration. There are many available options, see gwt-maven-plugin 
          documentation at codehaus.org -->
        <configuration>
          <runTarget>AF.html</runTarget>
          <hostedWebapp>${webappDirectory}</hostedWebapp>
          <i18nMessagesBundle>com.ivstel.af.client.Messages</i18nMessagesBundle>
        </configuration>
        <dependencies>
            <dependency>
              <groupId>com.google.gwt</groupId>
              <artifactId>gwt-servlet</artifactId>
              <version>${com.google.gwt.version}</version>
            </dependency>
            <dependency>
              <groupId>com.google.gwt</groupId>
              <artifactId>gwt-user</artifactId>
              <version>${com.google.gwt.version}</version>
            </dependency>
            <dependency>
              <groupId>com.google.gwt</groupId>
              <artifactId>gwt-dev</artifactId>
              <version>${com.google.gwt.version}</version>
            </dependency>
        </dependencies>
      </plugin>

      <!-- Copy static web files before executing gwt:run -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1.1</version>
        <executions>
          <execution>
            <phase>compile</phase>
            <goals>
              <goal>exploded</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <webappDirectory>${webappDirectory}</webappDirectory>
        </configuration>
      </plugin>

    </plugins>
  </build>

  <profiles>
    <profile>
      <id>noTest</id>
       <properties>
         <maven.test.skip>true</maven.test.skip>
       </properties>
    </profile>
  </profiles>

</project>

【问题讨论】:

    标签: java gwt maven


    【解决方案1】:

    问题是我使用的是旧版本的 gwt-maps,它使用的是旧版本的 ajaxloader。由于 gwt-maps 依赖在 gwt-visualizations 之前,编译器忽略了 gwt-visualizations 中的 ajaxloader 类。

    似乎ideal 解决这种情况的方法是使用 noredist 工件,然后显式包含 gwt-ajaxloader 依赖项。我们还必须从 ajaxloader 中排除 gwt-dev 依赖项(gwt-maven-plugin 要求)。

        <dependency>
          <groupId>com.google.gwt.google-apis</groupId>
          <artifactId>gwt-ajaxloader</artifactId>
          <version>1.1.0</version>
          <exclusions>
            <exclusion>
              <groupId>com.google.gwt</groupId>
              <artifactId>gwt-dev</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
    
        <dependency>
          <groupId>com.google.gwt.google-apis</groupId>
          <artifactId>gwt-maps</artifactId>
          <version>1.1.0</version>
          <classifier>noredist</classifier>
        </dependency>
    
        <dependency>
          <groupId>com.google.gwt.google-apis</groupId>
          <artifactId>gwt-visualization</artifactId>
          <version>1.1.1</version>
          <classifier>noredist</classifier>
        </dependency>
    

    【讨论】:

      猜你喜欢
      • 2017-11-26
      • 2012-10-31
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 2014-07-23
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多