如何在jar文件中查找扩展特定抽象类的类

时间:2014-06-14 20:55:19

标签: java jar io

我有一个名为ThreadPool.jar的jar文件,它与包捆绑在一起,包中包含一组类。整个ThreadPool.jar中只有一个类扩展了一个名为Pool的抽象类。我需要一个java程序,它可以搜索扩展Pool抽象类的单个类。我需要以类的完全限定名称形式输出,即packagename.classname,例如,如果Foo是一个扩展Pool和Foo的类驻留在名为static的包中,那么输出应该是“static.Foo”。

1 个答案:

答案 0 :(得分:0)

如果要修补ThreadPool.jar,第一个选项 - Java SPI - - 是使用Java SPI(服务提供者接口)。

这提供了实现某些接口的类的发现。

您创建一个文本文件/META-INF/services/PATHNAME-OF-INTERFACE,在其中指定一个或多个实现类。

第二个选项会将jar视为zip存档,遍历它,也许不会使用java加载每个类(可怕),但使用一些字节码库。仍然很可怕。