Bonjour,

J'ai créé une interface permettant de me connecter à une base LDAP (JNDI). Jusque là, ça fonctionne.

Ensuite, j'aimerais que l'utilisateur puisse modifier son mot de passe.
Pour ce faire, je lance un batch run.bat :
  • java -classpath ./classes ch.esnig.ldap.ClientLDAPUI
    -url="ldap://localhost:389" -authentication="simple"
    -principal="uid=geiers, ou=personne, dc=ecole, dc=ch"
    -credentials="xxx"
    java -classpath ./classes ch.esnig.ldap.ClientLDAPUI -newPsw


Lorsque le batch contient la commande -newPsw, je demande la saisie et la validation du mot de passe.
A la suite de ça, j'obtiens l'erreur suivante :
  • Exception in thread "main" java.lang.NullPointerException
    at ch.ldap.ClientLDAP.printMotPasseLDAP(ClientLDAP.java:108)
    at ch.ldap.ClientLDAPUI.main(ClientLDAPUI.java: 58)


Voici mon interface :
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
 
public class ClientLDAPUI {
  public static void main(String[] args) {
    String attribut = "userPassword";
    ...
    ...
 
    ClientLDAP client = new ClientLDAP();
    try {
      if (args.length>0) {
        for (int i=0; i<args.length; i++) {
          if (args[i].startsWith("-url")) {
            url = args[i].substring(5);
            System.out.println("url " + url);
          }
          else if (args[i].startsWith("-authentication=")) {
            authentication = args[i].substring(16);
            System.out.println("authentication " + authentication);
          }
          else if (args[i].startsWith("-principal=")) {
            principal = args[i].substring(11);
            System.out.println("principal " + principal);
          }
          else if (args[i].startsWith("-credentials=")) {
            credentials = args[i].substring(13);
            System.out.println("credentials " + credentials);
 
          }
          else if (args[i].startsWith("-help")) {
            System.out.println ("-help= ");
          } 
 
          else if (args[i].startsWith("-newPsw")) {
            do {
              Scanner s = new Scanner (System.in);
              System.out.println ("Nouveau mot de passe : ");
              newPsw = s.nextLine();
              System.out.println ("Validation du nouveau mot de passe : ");
              newPsw1 = s.nextLine();
 
              if (! newPsw.equals (newPsw1)) {
                System.out.println ("La validation du mot de passe n'est pas correcte !");
              }
            }
            while (! newPsw.equals (newPsw1));
 
            client.printMotPasseLDAP (principal);
            encodedActualPassword = client.getEncodedPassword (newPsw);
            client.setPassword (attribut, encodedActualPassword, newPsw, principal);
            client.printMotPasseLDAP (principal);
          }
        }
      }
      client.connection (url, authentication, principal, credentials);
     }
    catch ( ClientLDAPException e ) {
      e.printStackTrace();
    }
  }
}
Désolée pour la longeur de mon message, mais c'est difficile de faire autrement pour essayer d'expliquer clairement.

Si quelqu'un pouvait m'aider, ce serait sympa.

Merci d'avance!