2012-09-11 9 views
5

¿Cómo encuentro JARS innecesarios en mis proyectos Java? Estoy tomando varios proyectos de Java que tienen muchos JAR y tengo la sensación de que no los necesito. ¿Puede alguien decirme si conoce algún truco rápido para descubrir qué JAR necesita o no necesita un proyecto?¿Cómo encuentro JARS innecesarios en mis proyectos Java

A continuación se muestra la lista JAR de un proyecto Spring Web Flow con MySQL y Hibernate yo no entonces necesito todos los JAR, pero alguien puede decirme algunos trucos

activation-1.1.jar 
antlr-2.7.6.jar 
aopalliance-1.0.jar 
asm-3.1.jar 
asm-attrs-1.5.3.jar 
aspectjrt-1.6.8.jar 
aspectjweaver-1.6.8.jar 
c3p0-0.9.2-pre4.jar 
cas-client-core-3.2.1.jar 
cglib-2.2.jar 
commons-beanutils-1.8.0.jar 
commons-codec-1.4.jar 
commons-collections-3.1.jar 
commons-dbcp.jar 
commons-digester-1.8.1.jar 
commons-email-1.0.jar 
commons-fileupload-1.1.1.jar 
commons-io-1.1.jar 
commons-lang-2.5.jar 
commons-logging-1.1.1.jar 
commons-pool.jar 
dom4j-1.6.1.jar 
dumbster-1.6.jar 
ehcache-1.2.3.jar 
files.txt 
hibernate-annotations-3.5.0-Final.jar 
hibernate-commons-annotations-3.2.0.Final.jar 
hibernate-core-3.5.0-Final.jar 
hibernate-entitymanager-3.5.0-Final.jar 
hibernate-jpa-2.0-api-1.0.0.Final.jar 
hibernate-search-3.0.0.GA.jar 
hibernate-validator-4.0.2.GA.jar 
hsqldb-1.8.0.10.jar 
httpclient-4.1.2.jar 
httpclient-cache-4.1.2.jar 
httpcore-4.1.2.jar 
httpmime-4.1.2.jar 
icu4j-2.6.1.jar 
jackson-core-asl-1.5.3.jar 
jackson-mapper-asl-1.5.3.jar 
javassist-3.9.0.GA.jar 
jaxb-api-2.1.jar 
jaxb-impl-2.1.3.jar 
jaxen-1.1.1.jar 
jcl-over-slf4j-1.5.10.jar 
jdom-1.0.jar 
joda-time-1.6.jar 
joda-time-jsptags-1.0.2.jar 
jstl-1.2.jar 
jta-1.1.jar 
log4j-1.2.14.jar 
log4j-1.2.15.jar 
lucene-core-2.3.2.jar 
lucene-highlighter-2.0.0.jar 
mail-1.4.jar 
mailapi.jar 
mail.jar 
mchange-commons-java-0.2.2.jar 
mysql-connector-java-5.0.5.jar 
org.springframework.aop-3.1.1.RELEASE.jar 
org.springframework.asm-3.1.1.RELEASE.jar 
org.springframework.aspects-3.1.1.RELEASE.jar 
org.springframework.beans-3.1.1.RELEASE.jar 
org.springframework.binding-2.3.1.RELEASE.jar 
org.springframework.context-3.1.1.RELEASE.jar 
org.springframework.context.support-3.1.1.RELEASE.jar 
org.springframework.core-3.1.1.RELEASE.jar 
org.springframework.expression-3.1.1.RELEASE.jar 
org.springframework.faces-2.3.1.RELEASE.jar 
org.springframework.instrument-3.1.1.RELEASE.jar 
org.springframework.instrument.tomcat-3.1.1.RELEASE.jar 
org.springframework.jdbc-3.1.1.RELEASE.jar 
org.springframework.jms-3.1.1.RELEASE.jar 
org.springframework.js-2.3.1.RELEASE.jar 
org.springframework.js.resources-2.3.1.RELEASE.jar 
org.springframework.orm-3.1.1.RELEASE.jar 
org.springframework.oxm-3.1.1.RELEASE.jar 
org.springframework.test-3.1.1.RELEASE.jar 
org.springframework.transaction-3.1.1.RELEASE.jar 
org.springframework.web-3.1.1.RELEASE.jar 
org.springframework.webflow-2.3.1.RELEASE.jar 
org.springframework.web.portlet-3.1.1.RELEASE.jar 
org.springframework.web.servlet-3.1.1.RELEASE.jar 
org.springframework.web.struts-3.1.1.RELEASE.jar 
persistence-api-1.0.jar 
quartz-1.5.2.jar 
slf4j-api-1.5.10.jar 
slf4j-log4j12-1.5.10.jar 
smtp.jar 
spring-ldap-1.3.1.RELEASE-all.jar 
spring-security-cas-3.1.0.RELEASE.jar 
spring-security-config-3.1.0.RELEASE.jar 
spring-security-core-3.1.0.RELEASE.jar 
spring-security-crypto-3.1.0.RELEASE.jar 
spring-security-ldap-3.1.0.RELEASE.jar 
spring-security-openid-3.1.0.RELEASE.jar 
spring-security-remoting-3.1.0.RELEASE.jar 
spring-security-taglibs-3.1.0.RELEASE.jar 
spring-security-web-3.1.0.RELEASE.jar 
spring-tx-3.0.5.RELEASE.jar 
stax-api-1.0-2.jar 
tiles-api-2.1.3.jar 
tiles-core-2.1.3.jar 
tiles-jsp-2.1.3.jar 
tiles-servlet-2.1.3.jar 
urlrewritefilter-3.1.0.jar 
validation-api-1.0.0.GA.jar 
xalan-2.6.0.jar 
xml-apis-1.3.02.jar 
xmlParserAPIs-2.6.2.jar 
xom-1.0.jar 
+1

Jboss ha escrito una herramienta para analizar por usted. Alternativamente, podría hacer una extracción rápida y reiniciar para encontrar innecesarios –

+0

La eliminación de jarras y el reinicio de la aplicación web no arrojarán buenos resultados, ya que podría tener un jar que contenga una clase que no se cargó durante el inicio y que realmente se necesitaba durante el funcionamiento normal. –

+0

Encontrar una dependencia necesaria no es mucho truco, pero encontrar la versión requerida es un trabajo duro. –

Respuesta

5

la mejor manera sería utilizar un gestor de proyecto como Maven que manejaría automáticamente las dependencias por usted. Esta sería probablemente la mejor solución a largo plazo

La fuerza bruta sería mover todos los frascos a otra carpeta y seguir tratando de compilar su proyecto. Obtendrá muchos errores de clase perdidos, por lo que averigua qué jar tiene la clase (Google podría ayudar aquí), agréguela y luego vuelva a compilar.

Esas son las únicas dos maneras que se me ocurre

+2

Esto es correcto, pero dependiendo de su situación, eliminar y verificar puede ser más rápido que agregar y verificar. – BlackVegetable

0

Si utilizas Eclipse IDE, le recomiendo que permite descargar y usar ClassPath Helper
El documento para los botes no utilizados se puede encontrar aquí: Unreferenced Classes Sin embargo, por favor lea el aviso:

en los casos en los que se utiliza Class.forName() para cargar unas clases, lo cual es común en muchos marcos incluyendo puntales, archivos WAR web.xml, descriptores EJB, etc. constantes de interfaz (constantes finales estáticas) son comp iled en línea Esto significa que aunque hay una dependencia del tiempo de compilación de las constantes en tiempo de ejecución no se hace referencia a la interfaz/clase declarando

Actualización:

Estoy usando Eclipse Servicio Helios Release 2 y Funciona bien para mí. Hay una cosa que necesita asegurarse, debe explorar su proyecto usando Package Explorer (no Project Explorer como de costumbre) luego vaya a Ventana -> Mostrar vista -> Otro -> ClassPath Helper seleccione ClassPath View.

+0

obtengo nada más que una java.lang.NullPointerException con él –

+0

Johnathan, lea mi actualización anterior. Gracias al autor Bryant Harris, funciona bien con Eclipse Helios 3.6 Service Release 2. Al primer intento, tengo el mismo problema que tú. Después de leer el artículo del autor: [link] (http://www.theserverside.com/discussions/thread.tss?thread_id=37113) He descubierto cómo tratar con esto.He explorado mis proyectos usando Package Explorer y luego funciona. Solo le hago saber, por razones desconocidas, en algunos proyectos, Eclipse IDE se bloquea cuando abro ClassPath View. Por favor, intenta y avísame si puedo ayudarte. Buena suerte Johnanthan. –

+0

Lo probé en un proyecto web de primavera y me dijo que puedo eliminar todas las jarras de primavera jajaja ... Supongo que no funciona bien –

1

Puede intentar ejecutar JBoss Tattletale sobre su aplicación. Esto le proporcionará un informe sobre las dependencias de su aplicación, incluidas, entre otras, jarras no utilizadas, jarras duplicadas con diferentes números de versión, etc.

Cuestiones relacionadas