IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Argument décalé en console


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 95
    Par défaut Argument décalé en console
    Bonjour,

    Je tente de faire un bot wikipedia sur msn, comme le bot encarta sur msn.

    J'utilise cette librairie :

    http://java-jml.sourceforge.net/


    Mais l'exemple de base semble mal fonctionner :

    les arguments semblent décalé. J'ai légèrement modifié l'exemple de base pour trouver d'ou venait le problème.


    Je ne comprend pas très bien à quoi sert cette ligne :


    BasicMessenger messenger = (BasicMessenger) Class.forName(args[0]).newInstance();

    elle sert à récuperer le nom de la classe, non? Du coup j'ai tenté :

    BasicMessenger messenger = new BasicMessenger();

    et

    BasicMessenger messenger = (BasicMessenger) Class.forName("BasicMessenger").newInstance();

    Mais cela ne fonctionne pas.

    voilà l'exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    /*
     * Copyright 2004-2005 the original author or authors.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    package net.sf.jml.example;
     
    import net.sf.jml.MsnMessenger;
    import net.sf.jml.impl.MsnMessengerFactory;
     
    /**
     * @author Roger Chen
     */
    public class BasicMessenger {
     
       private String email;
       private String password;
     
       public String getEmail() {
           return email;
       }
     
       public void setEmail(String email) {
           this.email = email;
       }
     
       public String getPassword() {
           return password;
       }
     
       public void setPassword(String password) {
           this.password = password;
       }
       protected void initMessenger(MsnMessenger messenger) {
       }
     
       public void start() {
           //create MsnMessenger instance
           MsnMessenger messenger = MsnMessengerFactory.createMsnMessenger(email,
                   password);
     
           //MsnMessenger support all protocols by default
           //messenger.setSupportedProtocol(new MsnProtocol[] {
    MsnProtocol.MSNP8 });
     
           //default init status is online,
           //messenger.getOwner().setInitStatus(MsnUserStatus.BUSY);
     
           //log incoming message
           messenger.setLogIncoming(true);
     
           //log outgoing message
           messenger.setLogOutgoing(true);
     
           initMessenger(messenger);
           messenger.login();
       }
     
       public static void main(String[] args) throws Exception {
           if (args.length != 3) {
               System.out.println("Usage: java messengerClassName email password");
               System.out.println("arg 0 "+args[0]);
               System.out.println("arg 1 "+args[1]);
               System.out.println("arg 2 "+args[2]);
               return;
           }
     
     
           BasicMessenger messenger = (BasicMessenger) Class.forName(args[0])
                     .newInstance();
           messenger.setEmail(args[1]);
           messenger.setPassword(args[2]);
           messenger.start();
       }
    }


    et j'obtient ce résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $java net.sf.jml.example.BasicMessenger  adresse@hotmail.com password
    Usage: java messengerClassName email password
    arg 0 adresse@hotmail.com
    arg 1 password
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
           at net.sf.jml.example.BasicMessenger.main(BasicMessenger.java:74)
    Après avoir tenté de mettre le nom de la classe directement dans le code, de mettre le login et pass également dans le code, cela ne marche pas... que pourrai-je faire pour régler ce problème?

    Auriez vous une piste svp?


    Merci pour votre attention.

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Il me semble qu'il y a un gros bug dans la méthode main : selon leur description d'usage (Usage: java messengerClassName email password), il n'y a que deux arguments (email et password) ; or ils écrivent args.length != 3 et System.out.println("arg 2 "+args[2]);, qui plante, forcément.

    Il faut corriger l'un ou l'autre problème : soit il n'y a que deux arguments, soit il y en a trois. À toi de voir selon le contexte.

Discussions similaires

  1. fopen argument via la console
    Par orezator dans le forum Débuter
    Réponses: 7
    Dernier message: 05/02/2009, 22h26
  2. encodage d'arguments pour la console
    Par Invité dans le forum Général Python
    Réponses: 1
    Dernier message: 22/09/2008, 13h25
  3. [PHP-JS] script php en mode console et avec arguments
    Par danathane dans le forum Langage
    Réponses: 1
    Dernier message: 28/05/2007, 14h57
  4. [VB.NET][Application console] Arguments
    Par DotNET74 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/05/2005, 19h05
  5. [VB.NET] Application console et arguments
    Par Raduris dans le forum Windows Forms
    Réponses: 5
    Dernier message: 10/01/2005, 17h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo