Estoy trabajando con un framework Java que genera algunas clases (proxy) en tiempo de ejecución, usando un ClassLoader personalizado. Me gustaría obtener para cualquier clase que el ClassLoader personalizado devuelva de loadClass (..) la matriz de bytes sin formato que corresponde a esta clase. es posible? Sé que si una clase existe como un recurso, entonces puede usar una secuencia de entrada para cargar la clase en formato binario, pero ¿cómo puedo hacerlo si la clase se genera en tiempo de ejecución?Obtener bytes para una clase que se generó en el tiempo de ejecución
Respuesta
Registrar una ClassFileTransformer. En lugar de modificar los bytes, registre los datos que necesita.
Sí, en realidad terminamos haciendo eso hace unas semanas. Funciona. – user66237
Si reemplaza el ClassLoader personalizado con el suyo, puede agregar algún mecanismo para guardar los bytes sin procesar usted mismo.
Las clases en el Cargador de clases se crean mediante el método defineClass(). Si ya tiene un cargador de clases personalizado, puede simplemente anular todos los métodos defineClass(). A ese método se le pasa un byte [] que contiene los bytes de la clase. Almacene estos y puede acceder a ellos más tarde, sin embargo, para su aplicación.
Consulte [defineClass() documentación de Java] [1] para obtener más información.
[1]: http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html#defineClass(java.lang.String, byte [], int, int)
Todos los métodos defineClass son finales. –
- 1. ¿Hay alguna manera de obtener el bytecode para una clase en tiempo de ejecución?
- 2. Java: Obtener código de bytes de la clase en tiempo de ejecución desde el interior de la misma JVM
- 3. Obtener la dirección de error que generó una señal UNIX
- 4. Transmisión a una clase que se determina en tiempo de ejecución
- 5. symfony2 - Obtener tiempo de ejecución
- 6. Java: Extendiendo clase en tiempo de ejecución
- 7. Encontrar el archivo PHP (en tiempo de ejecución) donde se definió una clase
- 8. Crear una clase durante el tiempo de ejecución
- 9. En tiempo de ejecución, se encuentran todas las clases en una aplicación Java que se extienden una clase base
- 10. cómo encontrar el componente fuente que generó un DocumentEvent
- 11. Obtener detalles de las categorías en una clase en tiempo de ejecución?
- 12. Eclipse para obtener el tiempo de ejecución del programa
- 13. ¿Cómo usar struct timeval para obtener el tiempo de ejecución?
- 14. Convertir una matriz de bytes a una clase que contiene una matriz de bytes en C#
- 15. ¿Cómo obtener el tipo genérico en tiempo de ejecución?
- 16. ¿Cómo probar si una clase Java se extiende a otra en el tiempo de ejecución?
- 17. Creando una clase para una interfaz en tiempo de ejecución, en C#
- 18. cómo obtener entrada del usuario en el tiempo de ejecución
- 19. Decidir qué propiedades se serializan en el tiempo de ejecución
- 20. PHP modificación de clase en tiempo de ejecución
- 21. ¿Cómo obtener la longitud de una función en bytes?
- 22. convert Objeto de clase a bytes
- 23. JPA: ¿Cómo especifico el nombre de la tabla correspondiente a una clase en tiempo de ejecución?
- 24. ¿Cómo obtener información sobre la clase y el tiempo de ejecución?
- 25. ¿Cómo aumentar el tamaño de bytes [] en el tiempo de ejecución?
- 26. Obtener un tiempo de ejecución preciso de una instrucción MySQL
- 27. ¿Cómo obtener el tiempo necesario para que una aplicación se inicie?
- 28. Error de tiempo de ejecución 459 al utilizar WithEvents con una clase que implementa otro
- 29. ¿comprobó que las excepciones suceden en el tiempo de ejecución?
- 30. ¿Cómo comprobar si una subclase es una instancia de una clase en tiempo de ejecución?
¿No tiene acceso a la fuente del cargador de clases personalizado? – stacker