Я боролся с этой проблемой в течение 3 дней, и я думаю, что StackOverflow - мое последнее средство.У меня закончились идеи, почему это не работает :( Я использую GWT 2.4.0 и JDK 1.6.
Я проходил этот урок изастрял с зависанием приложения GWT. Приложение падает, если я упоминаю интерфейс com.google.web.bindery.requestfactory.shared.RequestContext в своем клиентском коде. Я даже не использую его. У меня просто есть неиспользуемый метод, который принимает RequestContext в качестве параметраЯ пытался ссылаться на RequestFactory - то же исключение. Поэтому я подозреваю, что мне не хватает чего-то, связанного с пакетом RequestFactory. Я добавил -logLevel DEBUG в компилятор GWT, и вот что у меня есть:
DEBUG: Rebinding com.vsezavtra.courierApp.client.ManagerShell.ManagerShellUiBinder.
DEBUG: Checking rule <generate-with class='com.google.web.bindery.requestfactory.gwt.rebind.RequestFactoryGenerator'/>.
ERROR: Errors in 'jar:file:/C:/work/externals/gwt/gwt-user.jar!/com/google/web/bindery/requestfactory/shared/Receiver.java'.
ERROR: Unable to find type 'com.vsezavtra.courierApp.client.ManagerShell.ManagerShellUiBinder'.
ERROR: Line 26: The import javax.validation.ConstraintViolation cannot be resolved.
ERROR: Line 79: ConstraintViolation cannot be resolved to a type.
ERROR: Line 81: ConstraintViolation cannot be resolved to a type.
ERROR: Hint: Previous compiler errors may have made this type unavailable.
ERROR: Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly.
ERROR: Deferred binding failed for 'com.vsezavtra.courierApp.client.ManagerShell.ManagerShellUiBinder'; expect subsequent failures.
ERROR: Unable to load module entry point class com.vsezavtra.courierApp.client.courierApp (see associated exception for details). java.lang.RuntimeException: Deferred binding failed for 'com.vsezavtra.courierApp.client.ManagerShell$ManagerShellUiBinder' (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:97)
at com.vsezavtra.courierApp.client.ManagerShell.<clinit>(ManagerShell.java:15)
at com.vsezavtra.courierApp.client.courierApp.onModuleLoad(courierApp.java:10)
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: com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)
at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:595)
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:97)
at com.vsezavtra.courierApp.client.ManagerShell.<clinit>(ManagerShell.java:15)
at com.vsezavtra.courierApp.client.courierApp.onModuleLoad(courierApp.java:10)
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)
ERROR: Failed to load module 'courierApp' from user agent 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1' at localhost:10695.
Полный журнал здесь . Мое приложение очень маленькое. Вот мой XML-файл GWT
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.0//EN" "http://google-web-toolkit.googlecode.com/svn/releases/2.0/distro-source/core/src/gwt-module.dtd">
<module rename-to="courierApp">
<inherits name='com.google.gwt.user.User'/>
<inherits name="com.google.web.bindery.requestfactory.RequestFactory"/>
<source path="client"/>
<entry-point class='com.vsezavtra.courierApp.client.courierApp'/>
</module>
Основной класс точки входа:
package com.vsezavtra.courierApp.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootLayoutPanel;
public class courierApp implements EntryPoint
{
public void onModuleLoad()
{
RootLayoutPanel.get().add(new ManagerShell());
}
}
BindableКласс пользовательского интерфейса
package com.vsezavtra.courierApp.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.google.web.bindery.requestfactory.shared.RequestContext;
public class ManagerShell extends Composite
{
interface ManagerShellUiBinder extends UiBinder<Widget, ManagerShell>
{
}
private static ManagerShellUiBinder uiBinder = GWT.create(ManagerShellUiBinder.class);
public ManagerShell()
{
initWidget(uiBinder.createAndBindUi(this));
}
// if I remove this method everything works :(
public void SetTest(RequestContext test) {}
}
и соответствующий XML-файл
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<g:VerticalPanel>
<g:HTMLPanel>
Test!
</g:HTMLPanel>
<g:HTMLPanel>
Test2!
</g:HTMLPanel>
</g:VerticalPanel>
</ui:UiBinder>
и, наконец, мой файл web.xml имеет только корневой элемент "web-app", поскольку у меня нет серверной части (пока).
Я использую IntelliJ IDEA 10.5.2 для отладки приложения.
Пожалуйста, дайте мне знать, если у вас есть дополнительные вопросы.Я действительно не знаю, что еще я могу сделать: (