2

在我的项目中,他们使用了超过 225 个以上导致内存问题的 jar 文件,在网上搜索时,我了解到Apache Tattletale将分析并给出应用程序使用的重复类和 JAR/API(类路径)的报告。所以我参考了以下链接

1)如何使用JBoss Tattletale工具

2)使用 Tattletale 发现 JBoss 客户端 jar 列表

3) Jboss 官方文档

但我不知道如何执行和运行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,我该如何设置/使用它。

4

3 回答 3

1

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

有趣的是,tattletale 本身表明 tattletale jar 包含 javaassist jar

在此处输入图像描述

于 2019-07-13T17:56:13.407 回答
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>
于 2020-12-29T20:09:24.157 回答
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. 运行命令 java -jar tattletale-1.2.0.Beta2.jar path_to_application_archive output_path
于 2016-10-14T10:01:15.117 回答