Bonjour tous le monde,
J'aurai besoin d'une aide concernant un souci que nous avons.
Nous avons un serveur tomcat qui tourne et qui ne peux pas etre arreter.
Nous avons le code Java suivant :
Notre souci est que le fichier, par mauvaise manipulation, ne se trouve plus dans les resources du JAR.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 InputStream resourceAsStream = this.getClass().getResourceAsStream("/file.json");
Nous utilisons des scripts Jython pour executer du code java en runtime (Je sais c'est tres moche et dangereux).
Pour pouvoir ecrire un script qui m'ajouterai le fichier de maniere dynamique au classpath il faudrait deja que j'arrive a ecrire ce code en Java (pour ensuite le transcrire facilement en Jython).
Apres avoir suivi quelque articles, je suis arrive au code suivant qui ne fonctionne toujours pas :
(Mon code ci dessous ne vient pas regler directement mon probleme avec le code deja mentionne, mais si ce dernier fonctionne je ferai l'adaptation requise)
Je vois en effet que le fichiers a ete ajouter a la liste de mon ClassLoader :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public static void main(String[] args) throws Exception { File f = new File("/opt/ahah/logs/server-8.log.gz"); URL u = f.toURL(); URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Class urlClass = URLClassLoader.class; Method method = urlClass.getDeclaredMethod("addURL", new Class[]{URL.class}); method.setAccessible(true); method.invoke(urlClassLoader, new Object[]{u}); InputStream resourceAsStream = MyCustomClass.class.getResourceAsStream("/opt/ahah/logs/server-8.log.gz"); Assert.notNull(resourceAsStream); }
mais resourceAsStream reste toujours null a la fin.
Lorsque je verifie egalement
je peux voir egalement mon fichier dans la liste tout comme sur la photo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MyCustomClass.class.getClassLoader()
Auriez vous une idee pour resoudre cela ?
merci
Partager