0

gwt2.4 のリリース版に変更しようとしたところ、問題が発生しました。セットアップで複数のプロジェクトを使用しています。サーバーサイド コードを含むプロジェクト、共有コードを含む 1 つのプロジェクトがあり、さまざまな gwt プロジェクトで使用でき、gwt プロジェクトはすべてを結合します。私はmavenですべてを構築します。ここにある注釈処理の指示に従いました: http://code.google.com/p/google-web-toolkit/wiki/RequestFactoryInterfaceValidation

プロキシとサービスがある共有プロジェクトをコンパイルすると、DeobfuscatorBuilder.java を含む「 generated-sources\apt\」フォルダーが作成されます。このプロジェクトのソースをメインプロジェクトの依存関係として持っており、バリデータも実行しようとしていますが、DeobfuscatorBuilder.java はここでは作成されません。すべてがコンパイルされますが、requestfactory への呼び出しを呼び出すと、エラーが発生します。

com.google.web.bindery.requestfactory.server.UnexpectedException: No RequestContext for operation ZwI9iqZS626uTt_TFwRtUwPYSOE=

セットアップに間違いがあると思いますが、どこを見つけることができませんでした..この問題を解決する方法を知っている人はいますか?

よろしくアルネ

アップデート:

これをpomに追加しました:

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>

                <executions>
                    <execution>
                        <id>unpack</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>unpack</goal>
                            <!-- <goal>build-classpath</goal> -->
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>com.myproject.core</groupId>
                                    <artifactId>shared</artifactId>
                                    <version>${shared.version}</version>
                                    <classifier>sources</classifier>
                                    <overWrite>true</overWrite>
                                    <outputDirectory>${project.build.directory}/com.myproject.shared</outputDirectory>
                                </artifactItem>
                                </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

これにより、依存関係のソースが解凍され、ターゲット フォルダーに配置されます。それから私は追加しました:

            <configuration>
                <sourceDirectory>target/com.fileee.shared</sourceDirectory>
            </configuration>

私のプロセッサプラグインに。

この方法では、ワークスペースにすべてのプロジェクトを配置する必要はなく、継続的な統合システムで動作するはずです。アンディの返事がなければ、それを理解することはできなかっただろう :)

4

1 に答える 1

1

私は同じ問題を抱えていて、何の運もなく答えを求めてウェブを精査するのに何時間も費やしました. プロセッサ プラグインを共有プロジェクトに追加すると、DeobfuscatorBuilder クラスが生成されますが、あなたと同じ No RequestContext 例外が発生します。GWT war プロジェクトにプロセッサまたはプラグインがあるだけの場合、ビルダーはまったく生成されません。

かなりの量の試行錯誤の結果、共有プロジェクトのソース ディレクトリを war プロジェクトのプロセッサ プラグイン構成に追加するとうまくいくことがわかりました... http://code.google.com/p/android-shuffle/source/browse /shuffle-app-engine/pom.xml#269

少し汚れていますが、うまくいきます。クロス プロジェクト ハッカーを必要としない公式の方法があれば、喜んで切り替えますが、まだ何も提案されていません。

乾杯アンディ

于 2011-11-19T09:52:46.920 に答える