0

最近、GWT + App Engine プロジェクトのセットアップを単一モジュールの Maven プロジェクトから複数モジュールの Maven プロジェクトに変更しました。

ここに画像の説明を入力

私のプロジェクトはmvn installエラーなしで (親で) を使用してビルドされ、プロジェクト全体がコンパイルされている限り、正常に実行されます。

ただし、これを<superDevMode>false</superDevMode>行うには Mojo gwt-maven-plugin の構成が必要です。これが私のpom.xmlの一部です:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <version>${gwt-maven-plugin.version}</version>

            <configuration>
                <strict>true</strict>
                <testTimeOut>180</testTimeOut>
                <!-- With multiple tests use GwtTestSuite.java for speed -->
                <includes>**/*GwtTest.java</includes>
                <mode>htmlunit</mode>

                <logLevel>INFO</logLevel>
                <style>PRETTY</style>

                <copyWebapp>true</copyWebapp>
                <hostedWebapp>${webappDirectory}</hostedWebapp>

                <server>com.google.appengine.tools.development.gwt.AppEngineLauncher</server>
                <appEngineVersion>${gae.version}</appEngineVersion>
                <extraJvmArgs>-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=10 -Xmx2g -Dappengine.sdk.root=${mvn.gae.home}
                </extraJvmArgs>

                <!--<port>8888</port>-->
                <superDevMode>false</superDevMode>
                <!--<incremental>true</incremental>-->
                <!--<bindAddress>0.0.0.0</bindAddress>-->

                <runTarget>Project.html</runTarget>
                <modules>
                    <module>com.utilitiessavings.usavappv7.Project</module>
                </modules>

            </configuration>

            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

SDM をオンにすると、起動時にエラーが発生しないようです (を使用gwt:run):

[INFO] --- gwt-maven-plugin:2.8.0-rc1:run (default-cli) @ UsavAppV7 ---
[INFO] create exploded Jetty webapp in C:\Users\Drew\IntelliJ\UsavApp\app\target\UsavAppV7-1.0-SNAPSHOT
[INFO] extract appengine 1.9.40 sdk to C:\Users\Drew\IntelliJ\UsavApp\app\target\appengine-sdk
[INFO] Super Dev Mode starting up
[INFO]    workDir: C:\Users\Drew\AppData\Local\Temp\gwt-codeserver-4487617494656562585.tmp
[ERROR] SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
[ERROR] SLF4J: Defaulting to no-operation (NOP) logger implementation
[ERROR] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[INFO]    Loading Java files in com.utilitiessavings.usavappv7.Project.
[INFO]    Module setup completed in 16220 ms
[INFO] 
[INFO] The code server is ready at http://127.0.0.1:9876/
[ERROR] Aug 16, 2016 4:35:26 PM com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties
[ERROR] INFO: Overwriting system property key 'java.util.logging.config.file', value 'C:\Users\Drew\.m2\repository\com\google\appengine\appengine-java-sdk\1.9.40\appengine-java-sdk\appengine-java-sdk-1.9.40\config\sdk\logging.properties' with value 'WEB-INF/logging.properties' from 'C:\Users\Drew\IntelliJ\UsavApp\app\target\UsavAppV7-1.0-SNAPSHOT\WEB-INF\appengine-web.xml'
[ERROR] Aug 16, 2016 4:35:26 PM com.google.apphosting.utils.jetty.JettyLogger info
[ERROR] INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
[ERROR] Aug 16, 2016 3:35:27 PM com.google.appengine.tools.development.IsolatedAppClassLoader checkWorkingDirectory
[ERROR] WARNING: Your working directory, (C:\Users\Drew\IntelliJ\UsavApp\app) is not equal to your 
[ERROR] web application root (C:\Users\Drew\IntelliJ\UsavApp\app\target\UsavAppV7-1.0-SNAPSHOT)
[ERROR] You will not be able to access files from your working directory on the production server.
[ERROR] 
[ERROR] Aug 16, 2016 3:35:27 PM com.google.apphosting.utils.jetty.JettyLogger info
[ERROR] INFO: jetty-6.1.x
[INFO] ChatServiceImpl constructed
[INFO] BlobServiceImpl constructed
[INFO] UploadPricesServlet constructed
[ERROR] Aug 16, 2016 3:35:30 PM com.google.apphosting.utils.jetty.JettyLogger info
[ERROR] INFO: Started SelectChannelConnector@0.0.0.0:8888
[ERROR] Aug 16, 2016 3:35:30 PM com.google.appengine.tools.development.AbstractModule startup
[ERROR] INFO: Module instance default is running at http://localhost:8888/
[ERROR] Aug 16, 2016 3:35:30 PM com.google.appengine.tools.development.AbstractModule startup
[ERROR] INFO: The admin console is running at http://localhost:8888/_ah/admin
[ERROR] Aug 16, 2016 4:35:30 PM com.google.appengine.tools.development.DevAppServerImpl doStart
[ERROR] INFO: Dev App Server is now running

しかし、localhost:8888 を開くと、「Super Dev Mode からプロジェクトを読み込めませんでした」というエラーが表示されます。

ここに画像の説明を入力

http://localhost:9876にアクセスすると、次のメッセージが表示されます。

HTTP エラー: 500

/ へのアクセスに問題があります。理由:

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getHeader(Ljava/lang/String;)Ljava/lang/String;


編集: pom.xml セットアップが要求されました

ここに 5 つの pom.xml ファイルを含む Gist を作成しました: https://gist.github.com/slugmandrew/1d9acf86be2c7db89031dc60de9df6e2

編集 2: SDM の実行に成功しましたが、何らかの理由でファイルの変更が検出されないため、再コンパイルされません。

Google グループの投稿: https://groups.google.com/forum/#!topic/google-web-toolkit/dF8KhbxnlBY

4

1 に答える 1

4

HttpServletResponse の getHeader メソッドは、Servlet 3.0 API の一部です。Servlet API の古いバージョン、つまり競合する GWT バージョン jar (2.6 と 2.7)、競合する Jetty jar、競合する servlet-api jar のクラスパスを確認してください。

于 2016-08-16T19:19:59.173 に答える