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
Partager