我使用OSGI,这是我想要禁用模块的主要原因,因为我真的不需要另一个模块框架。是否可以这样做,例如使用命令行选项?如果是,那怎么办?
答案 0 :(得分:5)
没有关闭模块系统的选项 - 它将始终处于活动状态。这会影响access to JDK-internal APIs, dependencies on Java EE modules, Split packages, and a lot of other small details。如果您希望应用程序在Java 9上运行,那么您的代码和依赖项必须处理这些迁移挑战。
但是,您绝不会被迫创建模块。您可以完全忽略module-info.java
并继续将所有JAR放在类路径上。模块系统将静默地将它们全部捆绑到unnamed module中,这是为了最大程度的兼容性而创建的。您甚至不会注意到模块系统在那里(假设您已经克服了我之前描述的挑战)。
答案 1 :(得分:3)
肯定你可以像受访者在这里说的那样
Trisha Gee:许多人没有意识到你可以使用Java 9及其所有闪亮的新功能而不使用Jigsaw,即你可以非常愉快地使用Java 9而无需迁移任何代码。 Java 9中有一些已经发生了变化的事情(例如隐藏了内部API)但理论上,如果你的应用程序开始做所有正确的事情,编译和运行Java 9应该没有问题。
查看entire interview但是如您所见,我们将为Java Applications提供两种类型,一种用于模块化世界,另一种用于非模块系统,这就是为什么 Red Hat 和 IBM 对 JSR 376 投了反对,如前所述[{3}},但在此之后他们投票没问题!
有关 Java 9模块系统 OSGI 的更多信息,请查看here
希望这很有用