He desarrollado un módulo para un proyecto Java. El módulo depende de la biblioteca externa (fastutil
). El problema es que el archivo fastutil.jar
es un par de veces más pesado que todo el proyecto (14 MB). Solo uso un pequeño subconjunto de las clases de la biblioteca. El módulo ya está terminado, y es probable que nadie lo extienda en el futuro. ¿Hay alguna manera de extraer solo la clase relevante a algunos fastutil_small.jar
para que otros no tengan que descargar todo este peso extra?Reducir el tamaño del archivo jar externo
Respuesta
Las herramientas de ofuscación como ProGuard suelen proporcionar una función para eliminar las clases no utilizadas (e incluso campos y métodos) del archivo jar. Sin embargo, debe tener cuidado para verificar que todo funcione, ya que podría estar utilizando reflecton para acceder a clases o métodos que ProGuard no puede analizar.
Sólo se puede utilizar esta característica y ya llegar a ser muy poco de ahorro de
O puede combinar con otras técnicas de ofuscación de ahorro de espacio (como la clase y el cambio de nombre del método) para ahorrar aún más espacio a costa de más difícil depuración (tus seguimientos de pila serán más difíciles de analizar).
+1 las primeras 5 palabras son exactamente lo que estaba pensando, al leer esta pregunta –
de instrucciones de proguard: 'ProGuard requiere que los frascos de la biblioteca (o wars, orejas, cremalleras o directorios) de los frascos de entrada sean especificado. Estas son esencialmente las bibliotecas que necesitaría para compilar el código. ProGuard los usa para reconstruir las dependencias de clase que son necesarias para un procesamiento adecuado. Los frascos de la biblioteca siempre permanecen sin cambios. Deberías ponerlos en la ruta de clase de tu aplicación final. Pero reducir el tamaño de los archivos jar de la biblioteca es exactamente lo que quiero (¿o estoy usando el vocabulario incorrecto?). ¿Qué me estoy perdiendo? –
@ Joe: se puede trabajar fácilmente alrededor de esto, mediante la especificación de la biblioteca a través de '-injars' y no a través de' -libraryjars' –
Yeah one crude es tener una copia de seguridad de su jar original. luego elimine todos los archivos de clase no utilizados del contenedor. y puede haber algunas referencias internas a otras clases que puede agregar cuando sea necesario. es decir, mientras lo ejecuta puede arrojar una excepción de clase no encontrada, entonces puede agregar esa clase desde el contenedor original a este contenedor.
Desde el installation instructions de fastutil:
Tenga en cuenta que el archivo jar es enorme, debido al gran número de clases: si va a enviar su propio frasco con algunas clases fastutil incluidos, usted debe buscar en AutoJar (también disponible en JPackage) para extraer automáticamente las clases necesarias.
Sí, lo hice rtfm :) Simplemente no logré hacer algo útil con él todavía (novato, ¿recuerdas? :)) –
Bueno, resulta que todo lo que tuve que hacer fue intentarlo tres veces. –
Como fastutil es el software de código abierto LGPL, puede copiar los archivos fuente relevantes a su proyecto y soltar ese archivo jar. El compilador le dirá si tiene todos los archivos que necesita. Simplemente mantenga los paquetes como están y ponga una copia del archivo de licencia fastutil en la parte superior.
- 1. Reducir el tamaño del archivo de pdf
- 2. Android - Reducir el tamaño del archivo de imagen
- 3. Cómo reducir el tamaño del archivo de imagen usando PIL
- 4. py2exe: Reducir el tamaño del archivo de la biblioteca
- 5. Cómo reducir el tamaño del archivo de audio en IOS
- 6. Cómo reducir el tamaño del archivo Eclipse PDOM?
- 7. Cómo reducir el tamaño del archivo de imagen en java
- 8. Reducir el tamaño del repositorio git
- 9. Cargando la entidad JPA desde el archivo Jar externo
- 10. Android Proguard skip jar externo
- 11. Reducir el tamaño del vídeo con el mismo formato y la reducción de tamaño del marco
- 12. ¿Qué puedo hacer para reducir el tamaño de las jar/classes?
- 13. cómo incluir un archivo jar externo utilizando PIG
- 14. Cómo agregar un archivo jar externo al proyecto GWT
- 15. Reducir el tamaño del ejecutable producido por GHC
- 16. Cómo reducir el tamaño del gráfico circular KendoUI?
- 17. jQuery fullcalendar - cómo reducir el tamaño del calendario
- 18. leer archivo del almacenamiento externo
- 19. Actualización del archivo .class en el jar
- 20. Para ver el contenido del archivo .jar
- 21. cómo reducir el tamaño de UIImage ...?
- 22. Reducir el tamaño del archivo PDF de la trama en I
- 23. Procesamiento de archivos PDF para reducir el tamaño o la complejidad del archivo
- 24. Eclipse: ¿Cómo construir un jar ejecutable con jar externo?
- 25. Administrar tamaño del archivo .git
- 26. Modificar Ejecutar el archivo jar
- 27. Cómo compilar el proyecto de Java con el archivo jar externo en el terminal de Linux
- 28. Cómo reducir el tamaño de std :: vector?
- 29. Reducir el tamaño de la imagen C#
- 30. GWT incluido el archivo javascript externo del manifiesto del módulo
¿Qué es lo que realmente quieres? – Venkat
Bueno, para agregar mi módulo al proyecto. es un par de paquetes java relativamente pequeños. todo lo que quiero es que mi dependencia de unas pocas clases de 'fastutil' no aumente el tamaño del proyecto tres veces. –