Java 软件包中的注释扫描仪

Java 软件包中的注释扫描仪,java,jboss,annotations,Java,Jboss,Annotations,我正在寻找一种简单的方法来查看我自己的注释的java包 我想做的是用我自己的注释标记一些类。扫描器每分钟都应该扫描一些包以查找此批注 用扫描瓶我试过了 URL url = ClasspathUrlFinder.findClassBase(FileWatcher.class); 使用AnnotationDB,我可以检查这个类(FileWatcher.class)是否有注释。现在我需要一个类的列表来扫描它们 我读了一些文章,大多数人说这是不可能的,因为classloader也可以加载外部jar文件

我正在寻找一种简单的方法来查看我自己的注释的java包

我想做的是用我自己的注释标记一些类。扫描器每分钟都应该扫描一些包以查找此批注

用扫描瓶我试过了

URL url = ClasspathUrlFinder.findClassBase(FileWatcher.class);
使用AnnotationDB,我可以检查这个类(FileWatcher.class)是否有注释。现在我需要一个类的列表来扫描它们

我读了一些文章,大多数人说这是不可能的,因为classloader也可以加载外部jar文件

我的另一个选择是复制子目录中包含这些注释的所有EJB项目,并扫描所有这些jar文件。我想那可能行得通,但没有更好的办法吗

许多问候,
豪克

尝试使用。测试代码中有一些代码。

谢谢。这很有帮助,而且工作起来很容易。如果有人需要:

      String packagename = "de.whatever";

      final Reflections reflections = new Reflections(packagename);

      Set<Class<? extends CargoServiceListenerInterface>> subTypes = reflections.getSubTypesOf(CargoServiceListenerInterface.class);

      for (Class<? extends CargoServiceListenerInterface> class1 : subTypes) {
        System.out.println("Class : " + class1.getName());
      }
String packagename=“de.where”;
最终反射=新反射(packagename);

设置如果您想要一个真正的轻量级(无依赖项,简单API,15 kb jar文件)和非常快速的解决方案,请查看在中找到的注释检测器。 扫描特定的包非常快(几毫秒)

其他选项请参见问题

免责声明:我是作者

    <repositories>
    <repository>
        <id>reflections-repo</id>
        <name>Reflections Maven2 Repository</name>
        <url>http://reflections.googlecode.com/svn/repo</url>
    </repository>
</repositories>

    <dependency>
    <groupId>org.reflections</groupId>
    <artifactId>reflections</artifactId>
    <version>0.9.5</version>
</dependency>