bonjour à tous et à toutes
j'essaye de charger toutes les classes que contient un jar..
voici mon code :
le problème c'est que j'obtiens toujours cette 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
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 import java.util.jar.*; import java.util.zip.*; import java.io.*; import java.util.*; class JarLoader extends ClassLoader { /* Attributs privés */ private String jarName; private Hashtable<String, Integer> jarMap = new Hashtable<String, Integer>(); /* Constructeur */ public JarLoader(String name) { this.jarName = name; } public void makeEntryList() throws IOException { ZipFile zf = new ZipFile(jarName); Enumeration<? extends ZipEntry> e = zf.entries(); ZipEntry ze; while (e.hasMoreElements()) { ze = e.nextElement(); jarMap.put(ze.getName(), (int)ze.getSize()); } } public void loadClasses() throws IOException, ClassNotFoundException { JarInputStream jis = null; try { jis = new JarInputStream(new FileInputStream(jarName)); Enumeration<String> keys = jarMap.keys(); while (keys.hasMoreElements()) { String entry = keys.nextElement(); // s'il ne s'agit pas d'une classe java, on passe if (entry.endsWith(".class") == false) { jis.skip(jarMap.get(entry)); } else { // il s'agit d'une classe java : on récupère son ByteCode String className = entry.substring(0, entry.indexOf(".")).replace("/", "."); int classSize = jarMap.get(entry); byte byteCode[] = new byte[classSize]; jis.read(byteCode, 0, classSize); defineClass(className, byteCode, 0, classSize); loadClass(className); } } } finally { jis.close(); } } public static void main(String[] args) throws Exception { JarLoader jarLoader = new JarLoader("leJar.jar"); jarLoader.makeEntryList(); jarLoader.loadClasses(); Class.forName("classexplorer.Fenetre"); } }
Exception in thread "main" java.lang.ClassFormatError: Incompatible magic value 0 in class file classexplorer/Main
(Main est la dernière classe qui se trouve dans le jar)
Merci d'avance..
Partager