2008-09-16 12 views
8

¿Existe alguna herramienta para detectar archivos jar innecesarios?Buscar la vía de acceso de clase Java mínima necesaria

Por ejemplo decir que tengo myapp.jar, que puedo iniciar con un classpath que contiene hibernate.jar, junit.jar y easymock.jar. Pero en realidad funcionará bien usando solo hibernate.jar, ya que el código que llama a junit.jar no es accesible.

Me doy cuenta de que la reflexión puede complicar las cosas, pero podría vivir con una herramienta que ignoraba la reflexión. Excepto por eso, parece un problema relativamente simple de resolver.

Si no existe tal herramienta, ¿cuáles son las mejores prácticas para decidir qué dependencias se necesitan? Me parece que debe ser un problema común.

Respuesta

3

Esto no es posible en un sistema que podría usar la reflexión.

Dicho esto, una herramienta de análisis estático podría hacer un buen trabajo si no utiliza CUALQUIER reflejo.

2

¿Has echado un vistazo a Dependency Finder?

http://depfind.sourceforge.net/

Una lista a la mano de la mayoría de las otras herramientas de dependencia de Java disponibles también está disponible en ese sitio.

1

he utilizado

http://code.google.com/p/jarjar/

y encontrado que es bastante bueno.

Además, descubrirá si ha roto cualquier reflejo fácilmente si tiene un buen conjunto de pruebas de unidad/aceptación :).

0

Algo para añadir a la respuesta de Bill K: es posible que no utilice la reflexión en absoluto, pero los JAR que está utilizando podrían hacerlo. Recuerdo haber encontrado algo así con xalan & xerces, donde se ha lanzado una ClassNotFoundException en tiempo de ejecución.

Cuestiones relacionadas