Creé nuevos módulos para el software escrito en Java. Este software se ejecuta desde el archivo jar. Mis clases amplían las clases en este software. Quiero escribir un complemento que agregue nuevas clases al archivo jar. Sé cómo extraer un archivo jar en el directorio y agregarlos al archivo jar utilizando el paquete java.util.jar, pero como hay muchos archivos para extraer del archivo, ¿es posible agregar nuevas clases sin extraer los archivos? a la carpeta, de alguna manera directamente.Cómo agregar nuevas clases de Java a las clases existentes en el archivo jar
Respuesta
jar uf jar-file input-file(s)
Permitirá agregar new files/update archivos existentes en el vaso sin extraer.
Usted puede utilizar el siguiente comando
jar uf foo.jar foo.class
Esto funciona solo al 50% ya que ese comando no colocará la clase en su paquete correspondiente estructura de árbol. – m0skit0
@ m0skit0 Para poner la clase en la estructura tres, debe pasar el nombre de la clase con la estructura del directorio. jar uf foo.jar /com/test/foo.class –
Su pregunta indica que usted quiere hacer esto mediante programación, no usando la línea de comandos jar
herramienta.
De la documentación se desprende que usted por lo menos necesita para obtener un JarInputStream
de un JarFile
existente, iterar sobre las entradas utilizando getNextJarEntry
, y escribir a un JarOutputStream
con las entradas, también añadir sus propios archivos nuevos utilizando las nuevas JarEntry
objetos para cada nuevo archivo.
Here's código de ejemplo para escribir un frasco mediante programación desde cero, este debe extenderse muy bien a su caso, con la diferencia de que la mayoría de los objetos JarEntry
vendrá de un JarInputStream
.
- 1. Clases de listado en un archivo jar
- 2. ¿Cómo extraer clases del archivo .jar?
- 3. ¿Cómo busca Java eficientemente los archivos jar para las clases?
- 4. Ocultar clases en un archivo jar
- 5. ¿Cómo se usan las clases de los archivos .jar?
- 6. ¿Puedo agregar clases al archivo rt.jar de sun?
- 7. ¿Precargar clases/bibliotecas Java en el inicio del jar?
- 8. Cómo cargar un archivo jar en el tiempo de ejecución
- 9. Agregar métodos a las clases POCO
- 10. Agregar DataAnnontations a las clases parciales generadas
- 11. Agregar clases complejas a Mongo
- 12. Cómo generar un diagrama de clase a partir de las clases existentes en Netbeans IDE
- 13. Ampliación o adición de nuevas clases en tiempo de ejecución en Java
- 14. encontrar nuevas clases de Java en tiempo de ejecución
- 15. Forma elegante de comparar el contenido de los JAR (para encontrar nuevas clases y métodos)
- 16. ¿Cómo instrumentar las clases del sistema Java?
- 17. ¿Directorio predeterminado donde se almacenan las nuevas clases?
- 18. Agregar imagen a JAR Java
- 19. ¿Nuevas clases creadas por los usuarios?
- 20. ¿Cómo proteger las clases compiladas de Java?
- 21. ¿Puedo ejecutar Dos clases diferentes desde el mismo archivo jar?
- 22. Cargando clases dinámicamente desde el jar
- 23. Múltiples clases Enum en un archivo Java
- 24. Agregar métodos personalizados a las clases de datos centrales
- 25. ¿Las clases Java más interesantes/útiles?
- 26. Agrupar diferentes clases de Java en un solo archivo jar en un solo contenedor
- 27. Xcode no reconoce inmediatamente nuevas clases (iOS)
- 28. JPA 2.0: Agregar clases de entidad a PersistenceUnit * desde diferentes jar * automáticamente
- 29. Agregar clases predeterminadas del paquete en NetBeans
- 30. crear una tercera clase a partir de las dos clases existentes en css
Me viene a la mente el modding de Minecraft. Por curiosidad, ¿escribiste este software que intentas extender tú mismo? Hay mejores formas de hacerlo en ese caso, utilizando la carga dinámica de clases. – Wug
No es necesario modificar un archivo jar existente. Solo coloque las clases en su propio jar y asegúrese de que ambos jar estén en classpath. –
Posible duplicado por el mismo usuario: http://stackoverflow.com/questions/11852954/changing-code-at-runtime-in-java –