模块依赖性是指一个模块依赖于或需要另一个模块。模块依赖性在“ 在Eclipse IDE中使用Java 9开发模块,第1部分 ” 一文中的“ 声明其他模块的依赖性”部分中介绍。在两篇文章的第一篇“ 使用模块依赖关系,第1部分 ”中,我们为两个模块创建了两个Java项目,一个主模块和一个依赖模块。我们无法在一个Java项目中创建这两个模块,因为Eclipse IDE不支持单个项目中的多个模块。创建了两个项目后,在这篇续篇文章中,我们将每个项目导出到一个单独的JAR文件中。在早期的教程中讨论了将模块导出和用作JAR文件,“使用Java 9模块作为JAR文件。“目前不支持在单个JAR中添加多个模块,但计划用于未来的Java版本。在本文中,我们将讨论配置两个Java项目并运行主模块应用程序演示模块依赖。本文包含以下部分:

设置主Java项目的构建路径

之前开发的两个Java项目存在错误,如图1中的红色标记所示。指示错误是因为两个模块在单独的项目中定义,并且依赖项目不在主项目的构建路径中。




java modbus 依赖 java模块依赖关系_java modbus 依赖

图1:带有错误的Java项目



在本节中,我们将配置MainModule项目的构建路径,以将HelloJavaModule项目添加到构建路径。右键单击Package Explorer中的MainModule,然后选择Build Path> Configure Build Path,如图2所示。




java modbus 依赖 java模块依赖关系_应用程序_02

图2: Package Explorer>构建路径>配置构建路径



Properties窗口中,将显示Java Build Path默认设置,如图3所示。




java modbus 依赖 java模块依赖关系_Java_03

图3: Java构建路径



选择Projects选项卡并选择Modulepath,如图4所示。单击Add ...




java modbus 依赖 java模块依赖关系_java modbus 依赖_04

图4: Java构建路径>项目>模块路径>添加...



要求的项目选择窗口显示的依赖项目HelloJavaModule,如图5.选择HelloJavaModule项目,然后单击确定。




java modbus 依赖 java模块依赖关系_java modbus 依赖_05

图5:选择要添加的项目



该HelloJavaModule项目被添加到ModulePath进行(见图6)。单击“ 应用并关闭”




java modbus 依赖 java模块依赖关系_应用程序_06

图6:添加到Modulepath的Java项目HelloJavaModule



错误和红色标记将从MainModule项目中删除,如图7所示。




java modbus 依赖 java模块依赖关系_jar_07

图7:从MainModule中删除的错误



将主Java项目导出到JAR文件

将HelloJavaModule项目添加到MainModule项目的构建路径只会消除构建/编译时错误。对于运行时,我们需要将每个模块导出到JAR文件,并将JAR文件添加到运行项目运行时的运行时模块路径中。需要将JAR文件导出到同一文件夹,以便我们能够配置模块路径而无需跨项目引用模块。如前所述,尚不支持多模块JAR,但计划在更高版本的Java中支持。

要将MainModule项目导出到JAR文件,请右键单击Package Explorer中的MainModule并选择Export,如图8所示。




java modbus 依赖 java模块依赖关系_应用程序_08

图8: Package Explorer> MainModule> Export



Export窗口中,选择Java> JAR file,如图9所示,然后单击Next。




java modbus 依赖 java模块依赖关系_Java_09

图9:导出> Java> JAR文件>下一步



JAR文件规范中,选择要导出为MainModule的资源,如图10所示。选择导出目标为MainModule modules mainmodule.jar。点击下一步。




java modbus 依赖 java模块依赖关系_Java_10


选择默认的JAR Packaging Options(参见图11),然后单击Next。


java modbus 依赖 java模块依赖关系_删除时存在依赖_11

图11:选择包装选项


接下来,自定义JAR清单规范,其中包括选择应用程序入口点的类。单击Browse for Main class,如图12所示。


java modbus 依赖 java模块依赖关系_Java_12

图12:主类>浏览


Select Main Class中,选择main.module包中的MainModule类,如图13所示,然后单击OK。


java modbus 依赖 java模块依赖关系_Java_13

图13:选择主类


主类中选择,单击完成,如图14。


java modbus 依赖 java模块依赖关系_删除时存在依赖_14

图14: JAR导出>完成


所述mainmodule.jar被导出到MainModule /模块目录,如图包资源管理器在图15中。


java modbus 依赖 java模块依赖关系_jar_15

图15:导出的JAR mainmodule.jar


将依赖项Java项目导出到JAR文件

在本节中,我们将依赖项目HelloJavaModule导出到与导出主模块JAR相同的目录中的JAR文件。要将HelloJavaModule项目导出到JAR文件,请在Package Explorer中右键单击该项目,然后选择Export(参见图16)。


java modbus 依赖 java模块依赖关系_java modbus 依赖_16

图16: Package Explorer> HelloJavaModule> Export


Export窗口中,选择Java> JAR file,如图17所示,然后单击Next。


java modbus 依赖 java模块依赖关系_jar_17

图17:导出> Java> JAR文件>下一步


JAR文件规范中,选择要导出为HelloJavaModule的资源,如图18所示。选择与主模块JAR相同的导出目标,即MainModule modules目录。JAR文件名需要不同,并且是helloJavaModule.jar。点击下一步。


java modbus 依赖 java模块依赖关系_删除时存在依赖_18

图18:依赖性JAR的JAR文件规范


选择默认的JAR Packaging Options,如图19所示,然后单击Next。


java modbus 依赖 java模块依赖关系_jar_19

图19:选择包装选项


接下来,自定义JAR清单规范。因为依赖项目不包含应用程序入口点的类,所以将Main类字段保持为空,如图20所示,然后单击Finish。


java modbus 依赖 java模块依赖关系_Java_20

图20:依赖项目没有主类


所述helloJavaModule.jar被导出到MainModule /模块目录,如图包资源管理器在图21中。


java modbus 依赖 java模块依赖关系_jar_21

图21:导出的JAR helloJavaModule.jar


添加运行配置

要运行主模块Java应用程序,我们需要为MainModule项目创建运行配置。右键单击Package Explorer中的MainModule,然后选择Properties,如图22所示。


java modbus 依赖 java模块依赖关系_jar_22

图22: Package Explorer> MainModule> Properties


在Properties窗口中,选择Run / Debug Settings并单击New ...以创建新的启动配置,如图23所示。


java modbus 依赖 java模块依赖关系_java modbus 依赖_23

图23:属性>运行调试设置>新建...


Select Configuration Type中,选择Java Application,如图24所示。


java modbus 依赖 java模块依赖关系_删除时存在依赖_24

图24:选择配置类型作为Java应用程序


在配置向导中,在Name字段中指定一个名称(MainModuleConfig),并选择Project作为MainModule,单击Search ...作为Main类,如图25所示。


java modbus 依赖 java模块依赖关系_java modbus 依赖_25

图25:设置启动配置属性


Select Main Type中,选择main.module.MainModule类型(参见图26),然后单击OK。


java modbus 依赖 java模块依赖关系_Java_26

图26:选择主要类型


主类中选择,单击参数选项卡以选择下一个虚拟机指定参数时,如图27。


java modbus 依赖 java模块依赖关系_java modbus 依赖_27

图27:选择Arguments选项卡


将以下VM参数添加到VM参数字段,如图28所示。

--module-path modules / helloJavaModule.jar; modules / mainmodule.jar -m mainModule / main.module.MainModule

所述--module路径 ARG设置模块路径两个JAR用于两个模块。该-m ARG设置模块。单击Apply,如图28所示。


java modbus 依赖 java模块依赖关系_jar_28

图28:应用运行配置设置


单击OK,如图29所示,完成运行配置。


java modbus 依赖 java模块依赖关系_删除时存在依赖_29

图29:完成运行配置


将创建一个新的运行配置MainModuleConfig,如图30所示。单击Properties窗口中的Apply和Close


java modbus 依赖 java模块依赖关系_删除时存在依赖_30

图30:为MainModule项目应用属性


运行主模块Java应用程序

接下来,我们将测试主模块是否通过运行主模块应用程序来调用依赖模块。在Package Explorer中右键单击MainModule.java,然后选择Run As> Java Application(参见图31)。


java modbus 依赖 java模块依赖关系_jar_31

图31: Package Explorer> MainModule> Run As> Java Ap


Java应用程序的输出显示在Console中,如图32所示。主模块中的“Hello from”消息与消息“Exported Java Module!”结合在一起。从依赖模块输出消息“Hello from Exported Java Module!”。


java modbus 依赖 java模块依赖关系_Java_32

图32:控制台输出


在两篇文章中,我们讨论了在Java 9中使用模块依赖性。

欢迎大家在评论区进行留言讨论,写的不好莫怪...