Bonjour,
Je suis en train d'essayer de mettre un point un système d'upload d'un JAR qui permet de charger une classe - contenue dans le jar - dans la WebApp courante.
Pour cela je me suis servi comme base de la classe FileClassLoader de Jack Harich (trouvée sur javaworld) que j'ai modifié.
Donc le principe upload à travers struts -> sauvegarde dans le fichier <web-app>/WEB-INF/extlib/<session-id>.jar
Puis lecture des octets du fichier class à travers le fichier Jar.
Voici le code de la méthode de FileClassLoader qui permet de lire le tableau de byte avant l'appel à defineClass
Mais voilà quand j'appelle la méthode chargement j'ai l'erreur suivante :
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 protected byte[] loadClassBytes(String className) { className = formatClassName(className); byte result[]; String fileName = filePrefix + className; try { ZipFile zipFile = new ZipFile(filePrefix); ZipEntry entry = zipFile.getEntry(className); InputStream inStream = zipFile.getInputStream(entry); result = new byte[inStream.available()]; inStream.read(result); inStream.close(); return result; } ...
java.lang.ClassFormatError: com/SimpleTest (Illegal constant pool index)
Donc pour tester j'ai mis directement le jat dans WEB-INF/lib et là j'ai accès sans problème à la classe. J'en conclu que c'est certainement la lecture à travers le Zip qui me pose problème...
Avez vous une idée ? Ou une autre classe pour faire cela ....
Partager