列出Java9中ClassLoaders使用的所有类路径“items”?

时间:2017-12-05 07:30:36

标签: java classpath java-9 jigsaw

在Java9之前,我可以获取URLClassLoader实例并获取包含类路径上所有项目的URL[]:jar和文件夹。

我怎样才能在Java9中做到这一点?如果我可以使用常规 API并且不强制用户添加其他VM标记或谁知道什么,那将是非常酷的。

现在,我可以获取当前模块的类路径:

Module module = MyClass.class.getModule();
module.getClassLoader().getResource(
    classNameToResourceName(MyClass.class));

这可以给我一些像file:/Users/.....。对于任何明确的第三方模块类,我都可以这样做,例如jar:file:///Users...

我知道如果ModuleFinder找到已经在某个路径上的模块 - 这就是我想在这里找到的东西。

我不知道如何获取其他模块/ jar的路径,而无需显式使用模块/ jar中的类(如上所示)。

System.getProperty("java.class.path")没有工作,因为它没有给出类路径,在Java9示例中,我试过它只返回IntelliJ IDEA的jar。

原因很明显:类路径扫描。这个功能并不是框架的新功能。例如,用户可以构建一个类,对其进行注释并完成 - 框架将找到它并为他/她注册。

编辑:建议的重复问题确实是相同的(关于扫描),但是,答案是有帮助的,但它并不完整。

0 个答案:

没有答案