GWT代码拆分。拆分的文件在一段时间内未加载

GWT代码拆分。拆分的文件在一段时间内未加载,gwt,split,Gwt,Split,我有个问题。在大型GWT(2.4)中,我设计的应用程序使用了GWT代码拆分。GWT编译器裁剪了一个小js部件的应用程序 但是,当我想加载一些模块时 final Module form = ModuleFactory.getInstance().getModule(modumesName); /*/ M1扩展模块 当我第一次调用creating widget M1时,我得到了一个js错误 “Uncaught com.google.gwt.event.shared.umbralleexceptio

我有个问题。在大型GWT(2.4)中,我设计的应用程序使用了GWT代码拆分。GWT编译器裁剪了一个小js部件的应用程序

但是,当我想加载一些模块时

final Module form = ModuleFactory.getInstance().getModule(modumesName);
/*/

M1扩展模块

当我第一次调用creating widget M1时,我得到了一个js错误

“Uncaught com.google.gwt.event.shared.umbralleexception:捕获一个或多个异常,请参阅umbralleexception#getCauses中的完整集”

但是,在其他时间,我得到了我的模块M1。在我看到的开发工具中,已加载分割部分

public class CreateModuleWidget extends Composite{
     private static final Binder binder = GWT.create(Binder.class);
     interface Binder extends UiBinder<Widget, CreateModuleWidget> {}

     public CreateModuleWidget() {
           /*initparams**/ 
     }

     @UiHandler("createButt")
     void onCreateClick(ClickEvent event) {
          String modumesName = "M1";
          final WidgetDialog dialog = new WidgetDialog(moduleName, true);
          final Module form = ModuleFactory.getInstance().getModule(modumesName);
          dialog.setDialogWidget(form);
          dialog.show();
     }
}

public class ModuleFactory{
    private Module form = null;

private static ModuleFactory instance = null;

public static ModuleFactory getInstance(){
    if(instance == null){
        instance = new ModuleFactory();
    }
    return instance;
}
    public Module getModule(String moduleName){
        if (moduleName.equals("M1")) {
           GWT.runAsync(new RunAsyncCallback() {        
        @Override
        public void onSuccess() {
            module = GWT.create(M1.class);
        }

        @Override
        public void onFailure(Throwable arg0) {
            Window.alert("not load M1");
        }
    });
          }
    return module;
   }
 }
public类CreateModuleWidget扩展了复合{
私有静态最终绑定器Binder=GWT.create(Binder.class);
接口绑定器扩展UiBinder{}
公共CreateModuleWidget(){
/*initparams**/
}
@UiHandler(“createButt”)
创建单击时作废(单击事件){
字符串modumesName=“M1”;
最终WidgetDialog=新建WidgetDialog(moduleName,true);
最终模块形式=ModuleFactory.getInstance().getModule(modumesName);
setDialogWidget(表单);
dialog.show();
}
}
公共类ModuleFactory{
私有模块形式=null;
私有静态ModuleFactory实例=null;
公共静态ModuleFactory getInstance(){
if(实例==null){
实例=新的ModuleFactory();
}
返回实例;
}
公共模块getModule(字符串moduleName){
if(模数等于(“M1”)){
GWT.runAsync(新的RunAsyncCallback(){
@凌驾
成功时的公共无效(){
模块=GWT.create(M1.class);
}
@凌驾
失败时公共无效(可丢弃arg0){
窗口警报(“未加载M1”);
}
});
}
返回模块;
}
}
Uncaught com.google.gwt.event.shared.umbralleexception:捕获一个或多个异常,请参阅umbralleexception#getCauses BDC16B1A93B4190A8C1DD66EEF9838B8.cache.html:1435中的完整集
(匿名函数)

好吧,你知道,之所以叫它
runAsync
,是因为它是a-同步的。

通常我是在MVC中这样做的

控制器检查它需要的模块是否为空,如果为空,则加载该模块,然后在获得所需代码后进入视图

Module module;



   if (module==null){

          //You could display a waiting message in a dialog

          GWT.runAsync(new RunAsyncCallback() {  
           ...
            public void onSuccess() {
                  module = GWT.create(M1.class);
                  showXYZView();
             }
     });

    }else{
          showXYZView();
    }

请粘贴完整的stacktrace。谢谢!Im在开发模式下添加了完整的代码(使用gwt浏览器插件),一切都很好。但是,当我编译projet并部署到appserver上时,我的应用程序工作错误
Module module;



   if (module==null){

          //You could display a waiting message in a dialog

          GWT.runAsync(new RunAsyncCallback() {  
           ...
            public void onSuccess() {
                  module = GWT.create(M1.class);
                  showXYZView();
             }
     });

    }else{
          showXYZView();
    }