43

Estoy creando una aplicación que publicará un enlace en Twitter. El siguiente código se niega a empaquetar para mí, lanzando el siguiente error:Empaquetado Error de lanzamiento de la aplicación Blackberry OAuth

Error: Cannot run program "jar": CreateProcess error=2, The system cannot find the file specified

Aquí está el código:

public class ShowAuthBrowser extends MainScreen implements OAuthDialogListener 
{ 
    private final String CONSUMER_KEY = "<Consumer>"; 
    private final String CONSUMER_SECRET = "<Secret>"; 
    private LabelField _labelStutus; 
    private OAuthDialogWrapper pageWrapper = null; 
    public StoreToken _tokenValue; 
    public BrowserField b = new BrowserField(); 
    Manager _authManager; 
    Manager _pinManager; 
    ButtonField authButton; 
    TextField authPin; 

    public ShowAuthBrowser()  
    { 
     _authManager = new VerticalFieldManager(NO_VERTICAL_SCROLL | 
               NO_VERTICAL_SCROLLBAR); 
     _pinManager = new HorizontalFieldManager(NO_VERTICAL_SCROLL | 
               NO_VERTICAL_SCROLLBAR); 
     authButton = new ButtonField("OK"); 
     authPin = new TextField(Field.EDITABLE); 
     _authManager.add(_labelStutus); 
     _authManager.add(b); 

     _pinManager.add(authButton); 
     _pinManager.add(authPin); 


     pageWrapper = new BrowserFieldOAuthDialogWrapper(b,CONSUMER_KEY, 
          CONSUMER_SECRET,null,this); 
     pageWrapper.setOAuthListener(this);  

     add(_pinManager); 
     add(_authManager); 

     authButton.setChangeListener(new FieldChangeListener() { 
      public void fieldChanged(Field field, int context) { 
       if(field == authButton) { 
         doAuth(authPin.getText()); 
       } 
      } 
     }); 

    } 

    public void doAuth(String pin) 
    { 
     try 
     { 
      if (pin == null) 
      { 
       pageWrapper.login(); 
      } 
      else 
      { 
       this.deleteAll(); 
       add(b); 
       pageWrapper.login(pin); 
      } 

     } 
     catch (Exception e) 
     { 
      final String message = "Error logging into Twitter: " + 
               e.getMessage(); 
      Dialog.alert(message); 
     }   
    } 

    public void onAccessDenied(String response) { 

     updateScreenLog("Access denied! -> " + response); 

    } 

    public void onAuthorize(final Token token) { 

     final Token myToken = token; 
     _tokenValue = StoreToken.fetch(); 
     _tokenValue.token = myToken.getToken(); 
     _tokenValue.secret = myToken.getSecret(); 
     _tokenValue.userId = myToken.getUserId(); 
     _tokenValue.username = myToken.getUsername(); 
     _tokenValue.save(); 

     UiApplication.getUiApplication().invokeLater(new Runnable() { 

      public void run() { 
       deleteAll(); 
       Credential c = new Credential(CONSUMER_KEY, 
               CONSUMER_SECRET, 
               myToken); 
       PostTweet tw = new PostTweet(); 
       String message="Testing BB App"; 
       boolean done=false; 
       done=tw.doTweet(message, c); 
       if(done == true) 
       { 
        Dialog.alert("Tweet succusfully..."); 
        close();  
       } 
      } 
     }); 

    } 

    public void onFail(String arg0, String arg1) { 
     updateScreenLog("Error authenticating user! -> " + arg0 + ", " + arg1); 
    } 

    private void updateScreenLog(final String message) 
    { 
     UiApplication.getUiApplication().invokeLater(new Runnable() { 

      public void run() { 
       _labelStutus.setText(message);     
      } 
     }); 
    } 
} 

Lo curioso es decir, si quito las siguientes líneas, que los paquetes bien :

authButton.setChangeListener(new FieldChangeListener() { 
     public void fieldChanged(Field field, int context) { 
      if(field == authButton) { 
        doAuth(authPin.getText()); 
      } 
     } 
    }); 

Me agradecería cualquier ayuda ya que realmente necesito el detector de campo adjunto a esta pantalla.

Con el código como authButton.setChangeListener(null), se empaqueta con éxito sin embargo necesito el código con FieldChangeListener para hacer algo.

+0

intento con un código como 'authButton.setChangeListener (nulo)' - sólo para asegurarse de que es no es la referencia a FieldChangeListener que está causando problemas – gnat

+0

Eso hace el paquete con éxito sin embargo, sí lo necesito para hacer algo. –

+0

verifica tu configuración de compilación; por lo que usted describe, parece más bien en la etapa de empaquetado, la utilidad jar no puede encontrar el archivo jar o el directorio que contiene el archivo 'FieldChangeListener.class'. Compruebe especialmente si empaqueta con la versión correcta de la API de Blackberry. – gnat

Respuesta

2

Asegúrate de que la ruta de tu contenedor Java esté configurada en la variable de entorno.

http://docs.oracle.com/javase/tutorial/essential/environment/paths.html

y echar un vistazo a las últimas 3 publicaciones en el siguiente sitio web:

http://supportforums.blackberry.com/t5/Java-Development/I-O-Error-Cannot-run-program-quot-jar-quot-CreateProcess-error-2/td-p/522638

También asegúrese de que el kit de desarrollo de software de Java ™ (Java SDK/JDK) está instalado en la computadora y se usa una versión correcta del SDK de Java.

http://supportforums.blackberry.com/t5/Java-Development/I-O-Error-CreateProcess/ta-p/445949

Como se ha mencionado en el comentario de Scott Boettger continuación, este post podría ser útil también: envases http://supportforums.blackberry.com/t5/Java-Development/why-cause-more-then-100-compiled-classes-packaging-I-O-error/m-p/520282

+3

Definitivamente tengo el SDK instalado. Pero su publicación me llevó a esta publicación: http://supportforums.blackberry.com/t5/Java-Development/why-cause-more-then-100-compiled-classes-packaging-I-O-error/m-p/520282. Tengo un proyecto bastante grande con muchas clases compiladas. –

Cuestiones relacionadas