When i compile with sencha cmd v3, i can obtain all-classes, but when i execute my app this is the error:

Code:
  ReferenceError: Ext is not defined
Ext.onReady(function() {
With this app.js source code

Code:
//@charset UTF-8

// Cargador dinamico
Ext.Loader.setConfig({        
    enabled: true,
    disableCaching: false,
    paths: {
        // Extjs
        'Ext': '../../libs/extjs_v4_1_1_a/src',
        // Ignore en sencha cmd compile
        'Ext.ux.form.TinyMCETextArea':                 '../../libs/extjs_cesi/Ext.ux.form.TinyMCETextArea.js',
        // Plugins y extensiones extjs
        'Ext.ux.PagingToolbarResizer':                 '../../libs/extjs_cesi/Ext.ux.PagingToolbarResizer.js',
        'Ext.ux.form.plugin.HtmlEditor':             '../../libs/extjs_cesi/Ext.ux.form.plugin.HtmlEditor.js',
        'Ext.ux.GMapPanel':                             '../../libs/extjs_cesi/Ext.ux.GMapPanel.js',
        'Ext.ux.IFrame':                             '../../libs/extjs_cesi/Ext.ux.IFrame.js',
        'Ext.ux.CheckColumn':                         '../../libs/extjs_cesi/Ext.ux.CheckColumn.js',
        'Ext.ux.RowExpander':                         '../../libs/extjs_cesi/Ext.ux.RowExpander.js',
        'Ext.ux.form.field.BoxSelect':                '../../libs/extjs_cesi/Ext.ux.form.field.BoxSelect.js',
        'Ext.ux.form.MultiSelect':                    '../../libs/extjs_cesi/Ext.ux.form.MultiSelect.js',
        'Ext.ux.form.ItemSelector':                    '../../libs/extjs_cesi/Ext.ux.form.ItemSelector.js',
        'Ext.ux.statusbar.StatusBar':                '../../libs/extjs_cesi/Ext.ux.statusbar.StatusBar.js',
        'Cesi.ux.form.field.Text':                    '../../libs/extjs_cesi/Cesi.ux.form.field.Text.js',
        'Cesi.ux.form.field.TextArea':                '../../libs/extjs_cesi/Cesi.ux.form.field.TextArea.js',
        'Cesi.ux.form.field.Number':                '../../libs/extjs_cesi/Cesi.ux.form.field.Number.js',
        'Cesi.ux.form.field.Trigger':                '../../libs/extjs_cesi/Cesi.ux.form.field.Trigger.js',
        'Cesi.ux.form.field.TwinTrigger':            '../../libs/extjs_cesi/Cesi.ux.form.field.TwinTrigger.js',
        'Cesi.ux.form.field.TriggerBuscar':            '../../libs/extjs_cesi/Cesi.ux.form.field.TriggerBuscar.js',
        'Cesi.ux.form.field.TriggerNuevoRapido':    '../../libs/extjs_cesi/Cesi.ux.form.field.TriggerNuevoRapido.js',
        'Cesi.ux.form.field.TriggerEscoge':            '../../libs/extjs_cesi/Cesi.ux.form.field.TriggerEscoge.js',
        'Cesi.ux.form.field.Recaptcha':                '../../libs/extjs_cesi/Cesi.ux.form.field.Recaptcha.js',
        'Cesi.ux.form.field.ClearableCombobox':        '../../libs/extjs_cesi/Cesi.ux.form.field.ClearableCombobox.js',
        'Cesi.ux.form.field.Color':                    '../../libs/extjs_cesi/Cesi.ux.form.field.Color.js'
    } 
});    

Ext.require('Ext.app.Application');
Ext.require('Ext.direct.*');
Ext.require('Ext.data.*');
Ext.require('Ext.tip.*');
Ext.require('Ext.window.MessageBox');
Ext.require('Ext.util.Format');
Ext.require('Ext.layout.container.Border');

//Ext.QuickTips.init();  

// Variables globales
var esitareasApp;
var directProvider;

// Funcion que se ejecuta cuando se ha cargado todo lo necesario de las extjs.
Ext.onReady(function(){

    // Arreglar algunos bugs en las traducciones de botones Extjs
    // Forzar idioma botones messagebox (bug ext)
    if (Ext.MessageBox) {
        Ext.MessageBox.msgButtons['ok'].text = Ext.MessageBox.buttonText.ok;
        Ext.MessageBox.msgButtons['cancel'].text = Ext.MessageBox.buttonText.cancel;
        Ext.MessageBox.msgButtons['yes'].text = Ext.MessageBox.buttonText.yes;
        Ext.MessageBox.msgButtons['no'].text = Ext.MessageBox.buttonText.no;
    }

    // Cargar el proveedor de Ext.Direct con la configuracion de API
    directProvider = Ext.direct.Manager.addProvider(Ext.app.esitareas_REMOTING_API);
    
    
    // Definir la MVC app principal (esitareasApp)
    // Dominio de las clases js = esitareas.xxxxxx
    esitareasApp = Ext.create('Ext.app.Application', {

        name: 'esitareas',
        autoCreateViewport: false,
        enableQuickTips: true,
        appFolder: 'app',
        
        controllers: [
            // Controladores eSItareas
            'main', 'mainStatusBar',
            'listas.mant',
            'tareas.mant', 'tareas.imprimir'
        ],
    
        launch: function() {
            var me = this;
    
            // Separador decimal y de millares
            Ext.util.Format.decimalSeparator = '.';
            Ext.util.Format.thousandSeparator = ',';            
    
            // Iniciar el gestor de tooltips
            //Ext.tip.QuickTipManager.init();
    
            // Añadir un listener al direct manager para que analice todos los datos que llegan y 
            // si vienen con el requiereLogin = true, abrir ventana de login.
            directProvider.on({
                data: function( provider, e, eOpts ){
                    if (e.result.requiereLogin) {
                        // Mostrar aviso para que haga login en eSInube
                        Ext.MessageBox.show({
                            title: gt.dgettext('esinube','Sesión.'),
                            msg: gt.dgettext('esinube','Debe iniciar sesión en eSInube.<br />Haga click en OK para cargar pantalla de entrada.'),
                            buttons:  Ext.MessageBox.OK,
                            closable: false,
                            icon: Ext.MessageBox.WARNING,
                            modal: true,
                            fn: function( buttonId, text, opt) {
                                // Volver a cargar la pagina principal del esinube
                                window.location = '../../';
                            }
                        });                                           
                    }
                },
                scope: this
            });
    
    
            // Comprobar si es necesario hacer login
            Ext.esitareasDirect.esitareas_sesiones.requiereLogin(function(response, event) {
    
                if (response.requiereLogin) {
                    //winLogin = me.getView('login').create();
                    //winLogin.show();
                    // Mostrar aviso para que haga login en eSInube
                    Ext.MessageBox.show({
                        title: gt.dgettext('esinube','Sesión.'),
                        msg: gt.dgettext('esinube','Debe iniciar sesión en eSInube.<br />Haga click en OK para cargar pantalla de entrada.'),
                        buttons:  Ext.MessageBox.OK,
                        closable: false,
                        icon: Ext.window.MessageBox.WARNING,
                        modal: true,
                        fn: function( buttonId, text, opt) {
                            // Volver a cargar la pagina principal del esinube
                            window.location = '../../';
                        }
                    });                       
                } else {
    
                    // Añadir eventos a la aplicacion antes y despues de los pasos iniciales
                    me.addEvents('prePasosIniciales','postPasosIniciales');
                    
                    if (me.fireEvent('prePasosIniciales')) {
    
                        // Ejecutar los pasos iniciales al entrar (incluye la creacion del view principal)
                        me.getController('main').pasosIniciales( me );
    
                        // Evento de pasos iniciales acabados
                        me.fireEvent('postPasosIniciales');
                    }
    
                }
            });    
        }
    
    });

});