Хостинг GWT не загружает модуль, но генерируемая война работает в другом месте.
Я использую maven-gwt-plugin и ext-gwt для своего проекта GWT, и когда я хочу запустить размещенный режим в eclipse, как рекомендовано здесь: http://mojo.codehaus.org/gwt-maven-plugin/user-guide/hosted.html Я получил следующее сообщение:
16:47:13.063 [ERROR] [tempoui] Unable to load module entry point class net.stinfoservices.axsens.tempo.ui.client.TempoUI (see associated exception for details)
java.lang.RuntimeException: Deferred binding failed for 'com.extjs.gxt.ui.client.image.XImages' (did you forget to inherit a required module?)
at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:53)
at com.google.gwt.core.client.GWT.create(GWT.java:98)
at com.extjs.gxt.ui.client.GXT.<clinit>(GXT.java:37)
at com.extjs.gxt.ui.client.util.Theme.<clinit>(Theme.java:44)
at net.stinfoservices.axsens.tempo.ui.client.TempoUI.onModuleLoad(TempoUI.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IncompatibleClassChangeError: Found interface com.google.gwt.core.ext.typeinfo.JClassType, but class was expected
at com.google.gwt.user.rebind.ui.ImageBundleGenerator.getValidUserType(ImageBundleGenerator.java:367)
at com.google.gwt.user.rebind.ui.ImageBundleGenerator.generate(ImageBundleGenerator.java:142)
at com.google.gwt.core.ext.GeneratorExtWrapper.generate(GeneratorExtWrapper.java:48)
at com.google.gwt.core.ext.GeneratorExtWrapper.generateIncrementally(GeneratorExtWrapper.java:60)
at com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:647)
at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:41)
at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:78)
at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:268)
at com.google.gwt.dev.shell.ShellModuleSpaceHost.rebind(ShellModuleSpaceHost.java:141)
at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:585)
at com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:455)
at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
at com.google.gwt.core.client.GWT.create(GWT.java:98)
at com.extjs.gxt.ui.client.GXT.<clinit>(GXT.java:37)
at com.extjs.gxt.ui.client.util.Theme.<clinit>(Theme.java:44)
at net.stinfoservices.axsens.tempo.ui.client.TempoUI.onModuleLoad(TempoUI.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:662)
Однако если я mvn clean install
и поставить сгенерированную войну на внешний причал, он работает.
Я действительно хочу использовать хост-режим, так как это выигрывает время разработки.
Вот мой pom.xml: http://pastebin.com/xPwCkw2c
Может кто-нибудь сказать мне, что я делаю неправильно или что происходит?
Спасибо за ваше время.
1 ответ
Несовместимое изменение класса указывает на то, что у вас есть две разные версии GWT на вашем пути к классам - но только в режиме разработки, а не во время компиляции, если война работает. Как вы работаете в режиме разработки? Вы используете довольно старую версию GWT (и gwt-maven-plugin тоже) - возможно ли, что вы пытаетесь запустить режим dev из вашей IDE, которая включает в себя более свежую версию GWT?
Последние изменения произошли в GWT 2.0 и GWT 2.2.0. В зависимости от того, какую копию GXT вы получаете, вы можете быть совместимы только с GWT 2.0 до версии 2.1.x. Более новые версии GXT с http://www.sencha.com/products/extgwt/downloads/ включают в себя три банки: одну до GWT 2.0, одну между 2.0 и 2.2 и одну для 2.2 и выше.