Bonjour,
j'ai utilisé le decompilateur JAD pour decompiler un fichier .class

Le resultat obtenu est different de celle que j'entends.
Le difference se situe au niveau de la gestion des erreurs

EXemple

Classe de départ :
extrait original.java
==>
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
 public HashMap loadParameters() throws TechnicalException {
 
      HashMap result = new HashMap();
      String key = null;
      String value = null;
      InputStream inputStream = null;
 
      try {
         // lit le fichier de propriétés
         inputStream = getClass().getClassLoader().getResourceAsStream(m_fileLocation);
 
         // transforme le fichier lu en Properties
         Properties props = new Properties();
         props.load(inputStream);
 
         // boucle sur la liste des paramètres
 
         Enumeration keys = props.keys();
         while (keys.hasMoreElements()) {
            key = (String)keys.nextElement();
            value = (String)props.get(key);
 
            // enregistre le paramètre trouvé dans m_parameters
            result.put(key, value);
         }
 
         // renvoie le résultat
         return result;
      }
      catch (Exception e) {
         throw new TechnicalException(CLASS_NAME, "Error while loading parameters in file " + m_fileLocation, e);
      }
      finally {
         if (inputStream != null) {
            try {
               inputStream.close();
            }
            catch (Exception e) {
               // do nothing ...
            }
         }
      }
   }


Extrait original obtenu après decompilation original.class avec JAD.

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
public HashMap loadParameters()
        throws TechnicalException
    {
        InputStream inputStream;
        Exception exception;
        HashMap result = new HashMap();
        String key = null;
        String value = null;
        inputStream = null;
        HashMap hashmap;
        try
        {
            inputStream = getClass().getClassLoader().getResourceAsStream(m_fileLocation);
            Properties props = new Properties();
            props.load(inputStream);
            for(Enumeration keys = props.keys(); keys.hasMoreElements(); result.put(key, value))
            {
                key = (String)keys.nextElement();
                value = (String)props.get(key);
            }
 
            hashmap = result;
        }
        catch(Exception e)
        {
            throw new TechnicalException(CLASS_NAME, "Error while loading parameters in file " + m_fileLocation, e);
        }
        finally
        {
            JVM INSTR jsr 149;
        }
        return hashmap;
        throw exception;
        local;
        if(inputStream != null)
            try
            {
                inputStream.close();
            }
            catch(Exception e) { }
        JVM INSTR ret 9;
    }


Constact 1 :

compilation impossible ( problème sur le code de gestion des exception)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
finally
        {
            JVM INSTR jsr 149;
        }
        return hashmap;
        throw exception;
        local;
        if(inputStream != null)
            try
            {
                inputStream.close();
            }
            catch(Exception e) { }
        JVM INSTR ret 9;


Constat 2 :
méthode suplementaire dans la classe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
static Class _mthclass$(String x0)
    {
        return Class.forName(x0);
        ClassNotFoundException x1;
        x1;
        throw new NoClassDefFoundError(x1.getMessage());
    }


Quelqu'un a t il une idée?
Je vous remercie d'avance