= サンプルの作成と起動 = == 作成 == 新規プロジェクトでGoogle>Web Application Projectを選択し、プロジェクト名をsample、パッケージ名をsampleとする。 サンプルコードが生成される。 Sample.gwt.xmlには、SuperDevModeを示す行の記述がある。 {{{ }}} == 実行 == 実行してみる。プロジェクトを右クリックし、Run As>Web Applicationを実行。 ※Web Application(GWT Classic Dev Mode)、Web Application(GWT Super Dev Mode)などもあるが、どれを選んでも同じ。このサンプルのままではClassic Dev Modeでは動作しないし、Classic Dev Modeは必要無いので無視。 コンソールに以下の表示がされ、 {{{ Running CodeServer with parameters: [-noprecompile, -port, 9876, -sourceLevel, 1.8, -bindAddress, 127.0.0.1, -launcherDir, C:\devel\workspace-neon\sample\war, -logLevel, INFO, -style, OBFUSCATED, sample.Sample] Super Dev Mode starting up workDir: C:\Users\admin\AppData\Local\Temp\gwt-codeserver-2387345311838190448.tmp 2016-11-08 15:01:33.398:INFO::main: Logging initialized @2217ms Loading Java files in sample.Sample. Module setup completed in 26664 ms 2016-11-08 15:01:59.149:INFO:oejs.Server:main: jetty-9.2.z-SNAPSHOT 2016-11-08 15:01:59.199:INFO:oejsh.ContextHandler:main: Started o.e.j.s.ServletContextHandler@58e1199{/,null,AVAILABLE} 2016-11-08 15:01:59.225:INFO:oejs.ServerConnector:main: Started ServerConnector@3e60c10f{HTTP/1.1}{127.0.0.1:9876} 2016-11-08 15:01:59.225:INFO:oejs.Server:main: Started @28044ms The code server is ready at http://127.0.0.1:9876/ Code server started in 27.06 s ms 2016-11-08 15:01:59.399:INFO:oejs.Server:main: jetty-9.2.z-SNAPSHOT 2016-11-08 15:02:01.707:INFO:oejsh.ContextHandler:main: Started c.g.g.d.s.j.WebAppContextWithReload@1baf4afd{/,file:/C:/devel/workspace-neon/sample/war/,AVAILABLE}{C:\devel\workspace-neon\sample\war} 2016-11-08 15:02:01.713:INFO:oejs.ServerConnector:main: Started ServerConnector@79b32995{HTTP/1.1}{127.0.0.1:8888} 2016-11-08 15:02:01.714:INFO:oejs.Server:main: Started @30533ms }}} ブラウザで以下のURLにてアクセス可能 {{{ http://127.0.0.1:8888/Sample.html }}} ブラウザにしばらく「Compling sample」の表示がされ、そのあいだコンソールには以下が出力される。 {{{ GET /recompile/sample Job sample.Sample_1_0 starting job: sample.Sample_1_0 binding: user.agent=gecko1_8 Compiling module sample.Sample Unification traversed 20096 fields and methods and 1939 types. 1908 are considered part of the current module and 1908 had all of their fields and methods traversed. Compiling 1 permutation Compiling permutation 0... Linking per-type JS with 1888 new/changed types. Source Maps Enabled Compile of permutations succeeded Compilation succeeded -- 12.049s Linking into C:\Users\admin\AppData\Local\Temp\gwt-codeserver-2387345311838190448.tmp\sample.Sample\compile-2\war\sample; Writing extras to C:\Users\admin\AppData\Local\Temp\gwt-codeserver-2387345311838190448.tmp\sample.Sample\compile-2\extras\sample Link succeeded Linking succeeded -- 2.388s 14.647s total -- Compile completed Linking succeeded -- 2.388s }}} == Run Configuration == Eclipseに作成されるsampleのRun Configurationを見て見る。 == GWTタブ == GWTタブにもやはりSuper Development ModeとClassic Development Modeの選択があるが、どちらを選択しても同じSuperにしかならない。 == mainクラスとArguments == MainタブのMainクラスは {{{ com.google.gwt.dev.DevMode }}} となっており、Argumentsは以下。 {{{ -remoteUI "${gwt_remote_ui_server_port}:${unique_id}" -startupUrl Sample.html -logLevel INFO -codeServerPort 9997 -port 8888 -war C:\devel\workspace-neon\sample\war sample.Sample }}} つまり、com.google.gwt.dev.DevModeというクラスをメインとし、それに指定する引数としてwarファイルの位置を示すなどしている。 実際に、Javaクラスを読み込んでJavaScriptに変換するのはCodeServerなのだが、それもDevModeクラスから起動されると思われる。DevModeクラスの引数は以下の通り、 * http://www.gwtproject.org/doc/latest/DevGuideCompilingAndDebugging.html#What_options_can_be_passed_to_development_mode DevModeを経由してCodeServerに引数が渡されると思われるが、CodeServerが受け入れる引数は以下の通り、 * http://www.gwtproject.org/articles/superdevmode.html つまり、DevModeで-codeServerPortとして受取る引数をCodeServerには-portとして与えていると思われる。 サンプル起動直後にコンソールに表示された {{{ Running CodeServer with parameters: [-noprecompile, -port, 9876, -sourceLevel, 1.8, -bindAddress, 127.0.0.1, -launcherDir, C:\devel\workspace-neon\sample\war, -logLevel, INFO, -style, OBFUSCATED, sample.Sample] }}} は、このことを表している。 = CodeServerのソース指定は? = CodeServerには-srcという引数がある。上記のCodeServerへのパラメータでは指定されていないのだが、これは確実に指定する必要がある。なぜなら、JavaソースがなければJavaScriptへの変換はできないから。 ここはどうなっているのだろうか? どこにも情報が見つからないが、わかったことは以下。 * Eclipseのビルドパスにソースフォルダとして指定されているものは読み込まれる。 * ただし、"test"という名前のソースフォルダは読み込まれない。 実際には、Run ConfigurationのclasspathタブのUser Entriesの値が上記のルールで自動変更されるのだが、"test"という名前でも無理やり追加すれば認識されるようだ。 しかし、こういう妙な仕様、しかもどこにも記述が無い仕様はやめてほしい。 しかも、コンソールには、どのフォルダをソースとして選択したかの情報が一切表示されない。 == 参考 == * http://www.gwtproject.org/articles/superdevmode.html