5

如何在我的 Java 项目中找到不需要的 JARS。我正在接管一些 Java 项目,其中有很多 JAR,我觉得我不需要它们。有人可以告诉我你是否知道任何快速技巧来找出项目需要或不需要哪些 JAR。

下面是一个带有 MySQL 和 Hibernate 的 Spring Web Flow 项目的 JAR 列表我不需要所有的 JAR 但有人可以告诉我一些技巧

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
4

3 回答 3

5

最好的方法是使用像Maven这样的项目管理器,它会自动为您处理依赖关系。这可能是最好的长期解决方案

蛮力的方法是将所有 jar 移动到另一个文件夹中,然后继续尝试编译您的项目。你会得到很多缺失的类错误,所以你要找出哪个 jar 有这个类(谷歌可能会在这里提供帮助),添加它,然后再次编译。

这是我唯一能想到的两种方式

于 2012-09-11T17:39:21.610 回答
1

您可以尝试在您的应用程序上运行 JBoss Tattletale。这将为您提供有关应用程序依赖关系的报告,包括但不限于未使用的 jar、具有不同版本号的重复 jar 等。

于 2012-09-11T21:11:54.860 回答
0

如果您使用的是 Eclipse IDE,我建议您下载并使用ClassPath Helper
未使用的 jar 的文档可以在这里找到:Unreferenced Classes 但是,请阅读注意事项:

在使用 Class.forName() 加载类的情况下,这在许多框架中很常见,包括 struts、WAR web.xml 文件、EJB 描述符等。接口常量(静态最终常量)是内联编译的。这意味着尽管在运行时对常量有编译时依赖性,但没有对声明接口/类的引用

更新:

我正在使用 Eclipse Helios Service Release 2,它对我来说很好用。您需要确保一件事,您必须使用包资源管理器(而不是像往常一样的项目资源管理器)来探索您的项目,然后转到 Window -> Show View -> Other -> ClassPath Helper 选择 ClassPath View。

于 2012-09-11T18:03:48.790 回答