0

我有使用RequestFactory一个GWT Web应用程序 - 该应用程序似乎发动就好了,但只要我尝试在浏览器中打开它,它与此异常鼓起:GWT Deobfuscator生成ClassCastException异常

com.google.web.bindery.requestfactory.server.RequestFactoryServlet doPost 
SEVERE: Unexpected error 
java.lang.ClassCastException: class com.myapp.console.shared.MyAppRequestFactoryDeobfuscatorBuilder 
    at java.lang.Class.asSubclass(Class.java:3126) 
    at com.google.web.bindery.requestfactory.vm.impl.Deobfuscator$Builder.load(Deobfuscator.java:52) 
    at com.google.web.bindery.requestfactory.server.ResolverServiceLayer.updateDeobfuscator(ResolverServiceLayer.java:43) 
    at com.google.web.bindery.requestfactory.server.ResolverServiceLayer.resolveRequestFactory(ResolverServiceLayer.java:176) 
    at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) 
    at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) 
    at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) 
    at com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.google.web.bindery.requestfactory.server.ServiceLayerCache.getOrCache(ServiceLayerCache.java:233) 
    at com.google.web.bindery.requestfactory.server.ServiceLayerCache.resolveRequestFactory(ServiceLayerCache.java:198) 
    at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:215) 
    at com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:135) 
    at com.google.web.bindery.requestfactory.server.RequestFactoryServlet.doPost(RequestFactoryServlet.java:133) 
    .... 

MyAppRequestFactoryDe​​obfuscatorBuilder类是自动生成的(我的类是MyAppRequestFactory),所以它很难调试。几个星期前,当我上次使用这个应用程序时,这种情况并没有发生。什么导致这个错误,我该如何解决它?我不是GWT专家,所以我们将不胜感激!

回答

0

这可能是一个类加载器的问题,Deobfuscator.Builder正在从不同的(和兄弟姐妹或子女,没有父母)的classloader比MyAppRequestFactoryDeobfuscatorBuilder加载,所以Deobfuscator.Builder父类的MyAppRequestFactoryDeobfuscatorBuilder是不一样的尝试加载它Deobfuscator.Builder类。

你改变了它的工作时间和现在之间的任何东西吗?

(注:GWT 2.6.0's DevMode has a classloader issue,所以如果你更新到2.6.0 GWT和不严格按照预期的项目布局 - 也就是说,一些库从WEB-INF/lib和/或编译的类中WEB-INF/classes不是缺少 - 那么你可以在这样的问题上运行)