java 9模块列出jar的所有文件

java 9模块列出jar的所有文件,java,java-9,java-module,Java,Java 9,Java Module,我想在Java9中列出一个模块中给定包的所有文件 我正在使用这段代码来完成任务(我还尝试了不同的方法来获取类加载器): 我知道模块被认为是从外部隐藏包的一种方式,但我想扫描的是库本身!我没有主意了 多谢各位 --更新-- 我看到如果我开junit <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifac

我想在Java9中列出一个模块中给定包的所有文件

我正在使用这段代码来完成任务(我还尝试了不同的方法来获取类加载器):

我知道模块被认为是从外部隐藏包的一种方式,但我想扫描的是库本身!我没有主意了

多谢各位

--更新--

我看到如果我开junit

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.6.2</version>
</dependency>
而使用模块信息

/target/test-classes/io/packageToBeScanned/
/target/test-classes/io/packageToBeScanned

它不关心扫描的包是否包含私有、包私有或公共类。

转到模块需要的不仅仅是添加模块信息。它还需要使用模块路径而不是类路径。作为旁注,要处理
io.packageToBeScanned.AnyClass.class
的包,还应该使用
io.packageToBeScanned.AnyClass.class.getClassLoader()
而不是
Thread.currentThread().getContextClassLoader()
。后者可以计算为完全无关的类装入器。此外,不要使用
新文件(resource.getFile())
。您不应该假设类文件部署在默认文件系统上。“它需要使用模块路径而不是类路径”是什么意思?2.“您不应该假设类文件部署在默认文件系统上”:我要加载的类要么在我进行扫描的库中,要么在使用该库的项目中。你觉得有什么问题吗?谢谢你你是说这里描述的是什么?例如,您不能使用
文件
来描述jar文件中的资源。您提供的链接很有用。它可能会帮助您了解出了什么问题,或者至少,您需要在有关软件运行方式的问题中添加哪些信息……这里可以找到解决方案:转向模块不仅仅需要添加模块信息。它还需要使用模块路径而不是类路径。作为旁注,要处理
io.packageToBeScanned.AnyClass.class
的包,还应该使用
io.packageToBeScanned.AnyClass.class.getClassLoader()
而不是
Thread.currentThread().getContextClassLoader()
。后者可以计算为完全无关的类装入器。此外,不要使用
新文件(resource.getFile())
。您不应该假设类文件部署在默认文件系统上。“它需要使用模块路径而不是类路径”是什么意思?2.“您不应该假设类文件部署在默认文件系统上”:我要加载的类要么在我进行扫描的库中,要么在使用该库的项目中。你觉得有什么问题吗?谢谢你你是说这里描述的是什么?例如,您不能使用
文件
来描述jar文件中的资源。您提供的链接很有用。它可能有助于您了解出现了什么问题,或者至少,您需要在有关您运行软件的方式的问题中添加哪些信息…解决方案可以在以下位置找到:
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.6.2</version>
</dependency>
/target/test-classes/io/packageToBeScanned
/target/classes/io/packageToBeScanned
/target/test-classes/io/packageToBeScanned/
/target/test-classes/io/packageToBeScanned