43

Ich erstelle eine Anwendung, die einen Link auf Twitter veröffentlichen wird. Der folgende Code weigert sich, für mich bis zu verpacken, wird folgende Fehler werfen:Verpackung Blackberry OAuth App Wurffehler

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

Hier ist der Code:

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);     
      } 
     }); 
    } 
} 

Das Seltsame ist, wenn ich die folgenden Zeilen zu entfernen, es Pakete einfach gut :

Jede Hilfe würde geschätzt werden, da ich wirklich den Feldhörer benötige, der diesem Bildschirm beigefügt ist.

Mit Code wie authButton.setChangeListener(null), es tut Paket erfolgreich aber ich brauche Code mit FieldChangeListener, etwas zu tun.

+0

try Verpackung mit Code wie 'authButton.setChangeListener (null)' - nur um sicher zu machen, dass es nicht der Verweis auf FieldChangeListener, der Probleme verursacht – gnat

+0

Das Paket erfolgreich, aber ich brauche es, etwas zu tun. –

+0

überprüfen Sie Ihre Build-Einstellungen; von dem, was Sie beschreiben, sieht es eher wie auf der Verpackung Bühne, JAR-Dienstprogramm kann JAR-Datei oder Verzeichnis mit 'FieldChangeListener.class' Datei nicht finden. Überprüfen Sie besonders, ob Sie gegen korrekte Version von Blackberry API – gnat

Antwort

2

Stellen Sie sicher, dass Ihr Java-Klassenpfad in der Umgebungsvariablen festgelegt ist.

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

und werfen Sie einen Blick auf die letzten drei Stellen in der folgenden Website:

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

auch sicherstellen, dass die Java ® Software Development Kit (SDK Java/JDK) installiert ist Der Computer verwendet eine korrekte Version des Java SDK.

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

Wie unten in Scott Boettger Kommentar erwähnt, könnte dieser Beitrag auch hilfreich sein: http://supportforums.blackberry.com/t5/Java-Development/why-cause-more-then-100-compiled-classes-packaging-I-O-error/m-p/520282

+3

Ich habe definitiv das SDK installiert. Aber deine Post auf dem Post führte mich zu diesem Post: http://supportforums.blackberry.com/t5/Java-Development/why-cedi-more-then-100-compiled-classes-packaging-I-O-error/m-p/520282. Ich habe ein ziemlich großes Projekt mit vielen kompilierten Klassen. –