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不是缺少 - 那麼你可以在這樣的問題上運行)