Java包扫描程序 - 查找具有给定接口的所有类

时间:2010-04-06 11:13:03

标签: java binding guice java.util.scanner

在C#中,您可以轻松读取给定程序集中的所有类。

我正在寻找Java中的等效功能。我需要这个来自动将EJB bean绑定到我的Guice模块。

3 个答案:

答案 0 :(得分:4)

不幸的是,Java中似乎没有现成的解决方案。

在我们的项目中,我们使用some blog建议的略微修改的方法。这里描述的解决方案是扫描文件系统和JAR的类。

如果您只想选择实现某个界面的类,您可以执行一些额外的检查,例如clazz.isAssignableFrom(MyInterface.class)

答案 1 :(得分:2)

程序集的Java等价物是一个JAR文件;可以使用java.util.jar中的类列出JAR文件的内容。

没有更普遍的机制(比如获取包中的所有类),因为Java类加载机制非常灵活,允许通过HTTP加载类或动态生成的类,所以不可能知道所有类可用。

答案 2 :(得分:0)

这是一个, http://grepcode.com/file/repo1.maven.org/maven2/com.metapossum/metapossum-scanner/1.0.1/com/metapossum/utils/scanner/PackageScanner.java

我们在Lightweight Java Framework,Snow中使用它,效果很好。

maven就像

<dependency>
   <groupId>com.metapossum</groupId>
   <artifactId>metapossum-scanner</artifactId>
   <version>1.0.1</version>
</dependency>