gpt4 book ai didi

java - 如何获取未命名模块的 Java 9 ModuleReference

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:01 29 4
gpt4 key购买 nike

<分区>

更新:我在这里回答了我自己的问题:

Scanning classpath/modulepath in runtime in Java 9

--

[老问题——已过时:]

在 Java 9 中仅给定 ModuleReference 对象获取 Module 的正确方法是什么?

考虑这两种引用 java.base 的方法:

Module mod = ModuleLayer.boot().findModule("java.base").orElse(null);
ModuleReference modRef = ModuleFinder.ofSystem().find("java.base").orElse(null);

mod 有一个方法 Set<String> getPackages() ,但是你只能得到包的名称,你不能列出每个包中的资源。

modRef 有一个方法 ModuleReader open() ,而 ModuleReader 有一个方法 Stream<String> list() 列出了模块中的资源,这是我需要做的。

但是,对于通过将非模块 jarfile 添加到类路径生成的自动(因此未命名)模块,您无法从 ModuleReferenceModuleFinder.ofSystem().find(String name) 获取 ModuleFinder.ofSystem().findAll() -- 您只能从 Module 获取 getClass().getModule() 引用。

我找不到任何方法来获取自动模块的 ModuleReference。我也找不到从 ModuleReference 对象获取 Module 的方法,这意味着如果模块是自动的和/或未命名的,我无法在 Module 中列出资源。

肯定有办法为给定的(已加载的)ModuleReference 获取 Module 吗?

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com