如何在Java项目中找到不需要的JARS。我正在接管一些有很多JAR的Java项目,我有一种感觉我不需要它们。有人可以告诉我,如果你知道任何快速的技巧,找出项目需要或不需要的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
答案 0 :(得分:5)
最好的方法是使用像Maven这样的项目管理器来自动处理依赖项。这可能是最好的长期解决方案
蛮力的方式是将所有的罐子移到另一个文件夹中,然后继续尝试编译你的项目。你会得到许多遗漏的类错误,所以你要弄清楚哪个jar有这个类(谷歌可能在这里帮助),添加它,然后再次编译。
这是我能想到的唯一两种方式
答案 1 :(得分:1)
您可以尝试在应用程序上运行JBoss Tattletale。这将为您提供有关应用程序依赖关系的报告,包括但不限于未使用的jar,具有不同版本号的重复jar等。
答案 2 :(得分:0)
如果您正在使用Eclipse IDE,我建议您下载并使用ClassPath Helper
可以在此处找到未使用的罐子的文件:Unreferenced Classes
但是,请阅读通知:
在Class.forName()用于加载类的情况下,这在许多框架中很常见,包括struts,WAR web.xml文件,EJB描述符等。 接口常量(静态最终常量)是内联编译的。这意味着尽管在运行时对常量有编译时依赖性,但没有对声明接口/类的引用
<强>更新强>
我正在使用Eclipse Helios Service Release 2,它对我来说很好用。您需要确保一件事,您必须使用 Package Explorer (不像往常那样使用Project Explorer)浏览您的项目,然后转到Window - &gt;显示视图 - &gt;其他 - &gt; ClassPath Helper选择ClassPath View。