繁体   English   中英

tomcat / lib或WEB-INF / lib中不需要的jar文件

[英]Unwanted jar files in tomcat/lib or WEB-INF/lib

我目前正在开发一个大约十年前的应用程序。 当我查看与应用程序关联的jar文件时,我可以看到许多不需要的jar和同一jar的许多不同版本。

在lib中使用不需要的jar有什么缺点。 找到并删除它们的简便方法是什么?

如果类加载器决定从不同版本的jar文件加载类比您预期的更多,则可能会出现问题。 这些问题通常难以跟踪。 服务器将以某种特定顺序查看jar(按字母顺序按文件名?)并使用它找到的第一个匹配的类/资源。 可能没有保证首先查看最新版本的jar文件。

我不知道有哪些工具可以找出哪些罐子未被使用。 在一般情况下由于反射可能是不可能的,但至少在理论上应该可以进行某种程度的自动检查。

如果您没有良好的单元测试,那么通过试验和错误删除未使用的jar文件是有问题的,我怀疑您在几十年前的应用程序中有这些测试。 可能总会有一些罕见的错误情况,这取决于您刚删除的旧jar版本。

我的建议是,如果您的应用程序正在运行,请保留现在的罐子。 如果不是不可能找到哪个jar文件实际上由类加载器拾取将是非常麻烦的。 (当然不要部署新的应用程序)。

您可以使用JarAnalyzer找到jar文件包含的 这将为您提供重复的概念,您可以开始删除旧版本的jar文件。 但是,这个程序需要手工完成并通过反复试验来完成。 此外,相同的包可以包含在具有不同名称且没有版本信息的两个罐中。

正如已经说过的那样,同一个罐子的不同版本可能会带来严重破坏。 您无法知道实际使用哪个版本以及它将为此应用程序或其他应用程序带来的冲突。 这就是为什么你永远不应该将Tomcat的共享文件夹用于应用程序jar。 如果您处于共享文件夹中放置了许多jar文件的情况,请避免将此服务器用于新应用程序。

通过应用程序中不需要的jar文件,您是否意味着每次都是作为编译和构建过程的一部分生成的? 如果是这样,那么它可能是您要清理的构建脚本。

如果您指的是实际的部署环境,那么必须非常小心地进行任何清理。 为什么不尝试使用干净的tomcat安装和部署的最新版本的可执行文件在新的测试环境中重新开始? 看看它是否运行良好,如果确实如此,那么额外的罐子可能确实是不必要的。

至于缺点,除了部署的文件大小外,我没有看到任何其他内容。

你怎么决定哪些罐子没有被实际使用?

我建议将其作为完全需要QA的改变。 如果你删除一个“过时的”jar,你不知道从这组jar中选择的代码是否会影响一个错误的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM