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

发布于 2024-08-28 00:36:31 字数 93 浏览 9 评论 0原文

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

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

In C# you can easily read all classes from a given assembly.

I'm looking for equivalent feature in Java. I need this to automatically bind EJB beans to my Guice Module.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烟织青萝梦 2024-09-04 00:36:31

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

在我们的项目中,我们使用了 一些博客。这里描述的解决方案是扫描文件系统和 JAR 中的类。

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

Unfortunately there seems to be no ready-to-use solution in Java.

In our project we used a slightly modified approach suggested by some blog. The solution described there is to scan file system and JARs for classes.

If you want to pick only classes implementing some interface, you can do some additional check like clazz.isAssignableFrom(MyInterface.class).

愚人国度 2024-09-04 00:36:31

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

没有更通用的机制(例如获取包中的所有类),因为 Java 类加载机制非常灵活,并且允许通过 HTTP 加载或动态生成类之类的内容,因此不可能知道所有可用的类。

The Java equivalent of an assembly is a JAR file; the contents of a JAR file can be listed by using the classes in java.util.jar.

There is no more general mechnism (like getting all classes in a package) because the Java class loading mechnism is very flexible and allows for things like classes loaded via HTTP or generated on the fly, so it's impossible to know all classes that are available.

意犹 2024-09-04 00:36:31

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

我们使用它在我们的轻量级 Java 框架 Snow 中,效果非常好。

行家就像

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

Here is one,
http://grepcode.com/file/repo1.maven.org/maven2/com.metapossum/metapossum-scanner/1.0.1/com/metapossum/utils/scanner/PackageScanner.java

We used it in our Lightweight Java Framework, Snow, and it works great.

The maven is like

<dependency>
   <groupId>com.metapossum</groupId>
   <artifactId>metapossum-scanner</artifactId>
   <version>1.0.1</version>
</dependency>    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文