我使用OSGI,这是我想要禁用模块的主要原因,因为我真的不需要另一个模块框架。是否可以通过命令行选项完成禁用?如果可以,具体操作如何?
无法关闭模块系统 - 它将始终处于活动状态。这会影响到访问JDK内部API、依赖Java EE模块、分离包和很多其他小细节。如果您想在Java 9上运行应用程序,您的代码和依赖项必须处理这些迁移挑战。
但是,您不必强制创建模块。您可以完全忽略module-info.java
并继续将所有JAR文件放置在类路径中。模块系统将悄无声息地将它们全部捆绑到未命名模块中,该模块旨在实现最大兼容性。您甚至可能都没有注意到模块系统存在(假设您已经克服了我之前描述的挑战)。
module-info.java
文件,那么您的构建工具应该只使用类路径,其中忽略了所有依赖项中的module-info.class
文件。 - Nicolai Parlog当然可以,正如面试者所说的:
特丽莎·吉:许多人没有意识到,你可以使用Java 9及其所有亮眼的新功能,而不使用Jigsaw,也就是说,您可以在不迁移任何代码的情况下非常愉快地使用Java 9。Java 9中有一些变化(例如隐藏内部API),但理论上,如果您的应用程序一开始就做了所有正确的事情,那么使用Java 9进行编译和运行应该没有问题。
请看完整的采访内容,但是正如您所看到的,我们将有两种Java应用程序类型,一种是模块化世界,另一种是非模块系统,这就是为什么Red Hat和IBM在此提到的JSR 376投了反对票,但随后他们改变了态度并投了赞成票!
如需了解更多关于Java 9模块系统和OSGI的信息,请查看此处
希望这对您有所帮助。
Unrecognized option: --permit-illegal-access Error: Could not create the Java Virtual Machine.
这个开关在Java 9中支持吗? - Pavel_K