如何使用Apache Tattletale分析类路径中使用的重复Jar / API

时间:2016-04-18 11:48:14

标签: java jboss tattletale

在我的项目中,他们使用了超过225个jar文件导致内存问题,而在网上搜索我知道 Apache Tattletale 将分析并提供重复类和JAR / API的报告应用程序使用(Classpath)。所以我已经审阅了以下链接

1)how to use JBoss Tattletale tool

2)Uncover JBoss client jar list with Tattletale

3)Jboss official Documentation

但我没有得到如何执行和运行 Tattletale Jar文件,我的应用程序不是基于maven所以我没有使用Maven。

我已经下载 tattletale-1.2.0.Beta2.jar 文件以及 jboss-seam-2.3.0.CR1-dist 文件并使用以下命令

java -Xmx512m -jar tattletale.jar /Java/workspaces/mycoolprojects/projectX output-projectx

但获得以下异常

Exception in thread "main" java.lang.NoClassDefFoundError: javassist/NotFoundException
        at org.jboss.tattletale.analyzers.Analyzer.getScanner(Analyzer.java:49)
        at org.jboss.tattletale.Main.execute(Main.java:608)
        at org.jboss.tattletale.Main.main(Main.java:1099)
Caused by: java.lang.ClassNotFoundException: javassist.NotFoundException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 3 more

更多我没有得到 jboss-seam-2.3.0.CR1-dist 文件的用法。意思是我可以看到很多jar文件和很多代码,但我不知道如何使用 tattletale

在他们提到的官方文档中jboss-tattletale.properties以及如何设置/使用它。

3 个答案:

答案 0 :(得分:0)

以下步骤对我有用:

  1. http://jboss-javassist.github.io/javassist/下载jboss-javassist-javassist-rel_3_22_0_cr1-2-g6a9079a.zip
  2. 将其提取到某个位置
  3. 转到该位置并复制javassist.jar
  4. 前往您的tattletale-1.2.0.Beta2.jar存在的位置
  5. 将javassist.jar粘贴到此处
  6. 在此路径中打开命令提示符
  7. run command java -jar tattletale-1.2.0.Beta2.jar path_to_application_archive output_path

答案 1 :(得分:0)

我遇到了同样的问题,该解决方案也对我有用。 (下载了最新的javaassist jar)

有趣的是,tattletale本身表明tattletale罐中装有 javaassist jar

enter image description here

答案 2 :(得分:0)

我继承了一个配置为使用此插件的旧 Maven 项目,但遇到了相同的 javassist 错误。可以调整插件依赖项,如图所示,使错误停止。

<plugin>
    <groupId>org.jboss.tattletale</groupId>
    <artifactId>tattletale-maven</artifactId>
    <version>1.2.0.Beta2</version>
    <executions>
        <execution>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <!-- This is the location which will be scanned for generating tattletale reports -->
        <source>${project.build.directory}/${project.artifactId}/WEB-INF/lib</source>
        <!-- This is where the reports will be generated -->
        <destination>${project.build.directory}/site/tattletale</destination>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.27.0-GA</version>
        </dependency>
    </dependencies>
</plugin>