Java反射获取特定子包的url

Java反射获取特定子包的url,java,reflection,Java,Reflection,我们正在构建一个测试框架,并使用反射扫描一个包,以查找已使用我们定义的注释进行注释的方法。 一切都很正常, 然而, 我们遇到了一些奇怪的事情 使用org.reflections.util中的ClasspathHelper将返回一个集, 但它似乎返回父文件夹的URL,而不是我们要扫描的实际包的URL 比如说,, 我们运行ClasspathHelper.forPackage(“com.company.project.packageWeWantScanned”), 我们将得到一个指向包含所有类的文件夹

我们正在构建一个测试框架,并使用反射扫描一个包,以查找已使用我们定义的注释进行注释的方法。 一切都很正常, 然而, 我们遇到了一些奇怪的事情

使用
org.reflections.util
中的
ClasspathHelper
将返回一个
, 但它似乎返回父文件夹的URL,而不是我们要扫描的实际包的URL

比如说,, 我们运行
ClasspathHelper.forPackage(“com.company.project.packageWeWantScanned”)
, 我们将得到一个指向包含所有类的文件夹的URL,而不是指向特定包的URL。 例如,在下面的示例文件结构中, 我们得到一个指向
类的URL,而不是
packageWeWantScanned

如何只扫描所需的特定包,而不是父文件夹中的所有类

classes
└── com
    └── company
        └── project
            ├── packageWeWantScanned
            │   ├── SomeClass.class
            │   ├── SomeOtherClass.class
            │   └── SomeOtherClass.class
            └── packageWeDontWantScanned
                ├── DifferentClass.class
                ├── DifferentOtherClass.class
                └── DifferentSomeOtherClass.class
编辑/更新:
Sotirios Delimanolis
的回答是正确的,但为了给遇到这个问题的人增加更多的背景,我们最初使用了:

Reflections reflection = new Reflections(ClasspathHelper.forPackage("com.company.project.packageWeWantScanned"), new MethodAnnotationsScanner());
这使得我们得到了比我们想要的更多的东西。

这就是我们所做的

有效地从类路径返回URL,包以[name]开头

您可能想使用


谢谢,这和广告上说的一模一样。但是我很好奇,如果我们将字符串作为字符串“
以[name]
开头”,为什么会选择另一个父文件夹?长度超过父路径的前缀不应该只返回预期路径及其子路径吗?为什么取而代之的是父文件夹?@BCqrstoO你能澄清你的问题吗?你指的是反思吗?对不起,我想我说得不清楚
ClasspathHelper.ForPackage
查找以您提供的内容开头的包,为什么它会返回父级?例如:
/folder1/
不是以
/folder1/folder2/
开头的,那么为什么要返回
/folder1
?(也许这不是你的问题,因为这是一个应该直接针对谁实现它的问题;除非我不理解javadoc。)@BCqrstoO我一点都不喜欢javadoc的措辞。(我不认为英语是开发人员的主要语言。)
ClasspathHelper#forPackage(..)
返回包含您提供的包名的资源(库/jar或文件系统位置)的URL。这就澄清了很多问题。谢谢你的帮助。。。再一次!
Reflections reflections = new Reflections("com.company.project.packageWeWantScanned", new MethodAnnotationsScanner());
System.out.println(reflections.getMethodsAnnotatedWith(SomeAnnotation.class));