Je crée une classe dynamiquement - en construisant le bytecode et en le chargeant avec un chargeur de classe. Plus tard, je dois obtenir InputStream
de cette classe. Avec la classe commune, j'obtiens ceci en obtenant la ressource URL
pour cette classe et en ouvrant alors le flux (url.openStream()
). Évidemment, ici je ne peux pas faire cela, car la classe chargée dynamiquement n'a pas l'URL.Obtenir InputStream d'une classe créée dynamiquement (en utilisant le bytecode)?
Comment puis-je obtenir InputStream
de classe créée dynamiquement?
La seule solution que je peux penser à atm est de sauvegarder les bytecodes dans un certain fichier/mémoire temporaire et d'en fournir InputStream
.
EDIT
J'ai besoin InputStream
de faire un autre changement bytecode au-dessus d'exister.
Si vous avez le bytecode comme 'byte []' alors vous pouvez construire un 'ByteArrayInputStream'. –
Je l'ai, mais il est généré à différents endroits de l'application et à différents moments. Si je commence à collecter tous les 'byte []' pour chaque classe de proxy, cela va être trop long. Quoi qu'il en soit, j'explore cette option. – igr
Puisque vous n'indiquez pas explicitement ce que vous devez faire avec l'InputStream, je peux seulement deviner, mais ObjectInputStream peut être utile? ref: [javadoc pour ObjectInputStream] (https://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html) – mangotang