1

Eclipseの下にMavenGWTプロジェクトがあり、サーバー側の依存関係をいくつか追加したため、Mavenプラグインはコンパイルされなくなりました。コンテキストに関する詳細は次のとおりです。

GWT以外の依存関係を追加しない場合、GWT mavenプラグインの目標gwt:compileは正常に完了します。

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

他の依存関係を追加すると、目標gwt:compileが失敗します。

[INFO] establishing classpath list (scope = compile)
[ERROR] Exception in thread "main" java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.Compiler.<init>(Lorg/eclipse/jdt/internal/compiler/env/INameEnvironment;Lorg/eclipse/jdt/internal/compiler/IErrorHandlingPolicy;Lorg/eclipse/jdt/internal/compiler/impl/CompilerOptions;Lorg/eclipse/jdt/internal/compiler/ICompilerRequestor;Lorg/eclipse/jdt/internal/compiler/IProblemFactory;)V
[ERROR]     at com.google.gwt.dev.javac.JdtCompiler$CompilerImpl.<init>(JdtCompiler.java:93)
[ERROR]     at com.google.gwt.dev.javac.JdtCompiler.<init>(JdtCompiler.java:231)
[ERROR]     at com.google.gwt.dev.javac.JdtCompiler.compile(JdtCompiler.java:193)
[ERROR]     at com.google.gwt.dev.javac.CompilationState.compile(CompilationState.java:115)
[ERROR]     at com.google.gwt.dev.GWTCompiler.distill(GWTCompiler.java:327)
[ERROR]     at com.google.gwt.dev.GWTCompiler.run(GWTCompiler.java:564)
[ERROR]     at com.google.gwt.dev.GWTCompiler.run(GWTCompiler.java:554)
[ERROR]     at com.google.gwt.dev.GWTCompiler.main(GWTCompiler.java:214)

gwt:compile(http://mojo.codehaus.org/gwt-maven-plugin-1.2/compile-mojo.html)でクラスパス/依存関係に関する構成パラメーターを検索しましたが、成功しませんでした。

サーバー側の依存関係をGWTの依存関係と一緒に使用して、GWTプラグインに非GWTの依存関係を考慮しないように指示したいと思います。


動作中のpom(gwt:compileは正常に完了します):

<?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">
    <modelVersion>4.0.0</modelVersion>
    <groupId>mygroupid</groupId>
    <artifactId>projectname</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>project name</name>

    <organization>
        <name>My company</name>
        <url>my company url</url>
    </organization>

    <properties>
        <gwt.version>1.5.3</gwt.version>
    </properties>

    <build>
        <finalName>final name</finalName>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                    <encoding>UTF-8</encoding>
                </configuration>
                <version>2.5.1</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                    <ajdtVersion>none</ajdtVersion>
                </configuration>
                <version>2.9</version>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <version>1.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <runTarget>org.mycompany.myproject.Main/welcomeGWT.html</runTarget>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <warSourceDirectory>war</warSourceDirectory>
                    <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
                </configuration>
            </plugin>
        </plugins>
    </build>

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

pomが機能しない(gwt:compileは例外をスローします):

 <?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">

    <modelVersion>4.0.0</modelVersion>
    <groupId>mygroupid</groupId>
    <artifactId>projectname</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>project name</name>

    <organization>
        <name>My company</name>
        <url>my company url</url>
    </organization>

    <properties>
        <gwt.version>1.5.3</gwt.version>
    </properties>

    <build>
        <finalName>final name</finalName>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                    <encoding>UTF-8</encoding>
                </configuration>
                <version>2.5.1</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                    <ajdtVersion>none</ajdtVersion>
                </configuration>
                <version>2.9</version>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <version>1.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <runTarget>org.mycompany.myproject.Main/welcomeGWT.html</runTarget>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <warSourceDirectory>war</warSourceDirectory>
                    <webXml>src/main/webapp/WEB-INF/web.xml</webXml>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.apache.ibatis</groupId>
            <artifactId>ibatis-sqlmap</artifactId>
            <version>2.3.4.726</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>3.6.0</version>
        </dependency>



        <!-- GWT -->
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-servlet</artifactId>
            <version>${gwt.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-user</artifactId>
            <version>${gwt.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
 </project>
4

2 に答える 2

1

私たちのプロジェクトで JasperReport を使用していますか? JasperReport と GWT の使用に問題があったことを覚えています。JasperReport には、 org.eclipse.jdt.internal.compiler.CompilerGWT が期待するものとは異なるバージョンの が含まれています。

クラスパスの順序を変更するだけでこれを修正できると思います(コメントですでに提案されています)。それでも問題が解決しない場合は、GWT のバージョンを更新してみてください。org.eclipse.jdt.internal.compiler.Compileまたは、GWT で動作するクラスのバージョンを含む JasperReport のバージョンを探してみてください。

于 2012-07-06T12:19:53.003 に答える
0

Web アプリケーションの展開中に、QA Linux環境で同様のエラーに直面しましたが、なんとか修正しました。この問題は、ローカルのWindows 10およびLinux Ubuntu仮想マシンにデプロイしたときでさえありませんでした。私の環境構成は次のとおりです

  1. Ubuntu 16.04 LTS
  2. アパッチ Maven 3.3.3
  3. Apache Tomcat/8.0.32 (Ubuntu)
  4. JVM 1.8.0_91-8u91-b14-0ubuntu4~16.04.1-b14

問題は、2 つの異なる jar ファイルで見つかった 2 つの eclipse コンパイラ クラスがあり、これにより tomcat の展開中にクラスパスで競合が発生したためです。犯人はファイル ecj.jar と jdtcore.jar です

私の元の pom.xml スニペットは以下のとおりです

    <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-compiler</artifactId>
        <version>6.3.0.Final</version>
    </dependency>       
    <dependency>
        <groupId>net.sourceforge.dynamicreports</groupId>
        <artifactId>dynamicreports-core</artifactId>
        <version>3.1.3</version>
    </dependency>
  1. drools-compilerのMaven依存関係ツリーには、ecj.jar ファイルが導入されています。
  2. jdtcore.jar ファイルを導入する jasperreports.jar を持つ dynamicreports-core.jar ファイルのMaven依存関係。

解決:

jasperreports.jar ファイルを導入する dynamicreports-core のバージョンをアップグレードしました。

注: http://www.cnblogs.com/xiaoMzjm/p/4566672.html を読んだ後、この問題を修正できました。このブロガーの功績。

    <dependency>
        <groupId>net.sourceforge.dynamicreports</groupId>
        <artifactId>dynamicreports-core</artifactId>
        <version>4.1.0</version>
    </dependency>   
于 2016-06-03T19:33:18.457 に答える