在即将发布的Java 9中,有没有办法动态发现哪些模块可用?
E.g:
我无法从文档中说出来。
答案 0 :(得分:6)
我认为不支持这种动态功能。目前,documentation of ModuleFinder.findAll()州:
ModuleFinder
提供了它所找到的模块的一致视图。如果多次调用findAll
,那么每次都会返回相同的(等于)结果。
答案 1 :(得分:6)
这取决于你愿意去的长度......
默认情况下,模块系统从用户代码中隐藏得很好,并且没有API告诉模块系统重新评估给定的命令行(例如--module-path
,--add-exports
,...)。所以立即回答是#34;不,你不能通过修改模块路径来改变应用程序。"
但是,您可以创建一个新图层,其中包含一个全新的模块图。启动JVM时,它将从命令行标志和模块路径内容创建单个层。使用现有API,您可以在该API之上创建新图层。
要了解图层,请查看The State of the Module System和the Javadoc for ModuleLayer
。