2

我们有一些遗留的 Java 应用程序,在类路径上有许多类文件夹和冗余 jar。一个供应商甚至通过我们必须预先添加到类路径的“覆盖”jar 来发布更新。虽然清理应该是一个中期目标,但我想知道是否有任何工具可以将所有这些目录/jar 折叠成一个结构,该结构代表实际上将在运行系统中类加载的文件版本. 我想我可以编写一个脚本,以正确的顺序复制目录并破解 jar 等。但是,我希望这已经完成了。

OneJar ( http://one-jar.sourceforge.net/ ) 可以将类路径收集到一个封闭的 jar 中,但它依赖于一个特殊的类加载器实现来访问 jar 中的 jar。

下面的评论者(谁应该重新提交这个作为答案!)有一个很好的建议。我还没有机会测试它。

4

2 回答 2

1

解决方案的一部分可能是使用代码覆盖工具运行示例会话。如果您确保您使用了应用程序的所有功能,则不使用没有覆盖的类,您可以将它们过滤掉。

事实上,从覆盖率报告中获取使用的类列表可能并不难然后为列表中的每个类找到它定义的 JAR/源文件夹并将它们添加到列表(或者更确切地说,设置) . 我发现有用的是标准 Unixgrep工具实际上非常有用,可以查看给定类在哪个 JAR 文件中。虽然由于您无法完全限定名称,但我希望它偶尔会出现误报,因此不应以自动方式使用。

希望这可以帮助您解决问题!

于 2009-05-29T13:55:56.357 回答
0

对于最多 5000 个字符的 CLASSPATHS,我通常完全没有问题。话虽如此,我敢打赌我可以通过一个比这更长的。我确实遇到过几次 Windows 2000 有 shell 限制的实例,我不得不使用 XP shell cmd.exe,因为它拥有更长的缓冲区......

您尝试通过的类路径的最大长度是多少?

于 2009-07-02T23:01:31.210 回答