Modulafhængighed henviser til, at et modul er afhængigt af eller kræver et andet modul. Modulafhængigheder blev introduceret i Erklærer afhængighed af andre moduler afsnittet i artiklen "Udvikling af et modul med Java 9 i Eclipse IDE, del 1." I den første af to artikler, "Using Module Dependencies, Part 1," lavede vi to Java-projekter til to moduler, et hovedmodul og et afhængighedsmodul. Vi kunne ikke have oprettet begge moduler i et Java-projekt, fordi Eclipse IDE ikke understøtter flere moduler i et enkelt projekt. Efter at have oprettet to projekter, eksporterer vi i denne fortsættelsesartikel hvert projekt til en separat JAR-fil. Eksport og brug af et modul som en JAR-fil er diskuteret i et tidligere selvstudie, "Brug af et Java 9-modul som en JAR-fil." Tilføjelse af flere moduler i en enkelt JAR understøttes ikke i øjeblikket, men er planlagt til en fremtidig Java-version. I denne artikel skal vi diskutere konfiguration af de to Java-projekter og kørsel af hovedmodulapplikationen for at demonstrere modulafhængighed. Denne artikel har følgende sektioner:
- Indstilling af byggestien for Java-hovedprojektet
- Eksport af Java-hovedprojektet til en JAR-fil
- Eksport af Dependency Java-projektet til en JAR-fil
- Tilføjelse af en kørselskonfiguration
- Kørsel af hovedmodulets Java-applikation
- Konklusion
Indstilling af byggestien for Java-hovedprojektet
De to tidligere udviklede Java-projekter har fejl, som angivet med de røde markører i figur 1. Fejlene er angivet, fordi de to moduler er defineret i separate projekter, og afhængighedsprojektet ikke er i hovedprojektets build-sti.
Figur 1: Java-projekter med fejl
I dette afsnit skal vi konfigurere byggestien for Hovedmodulet projekt for at tilføje HelloJavaModule projekt til byggestien. Højreklik på MainModule i Pakkestifinder, og vælg Build Path>Configure Build Path , som vist i figur 2.
Figur 2: Package Explorer>Byg sti>Konfigurer bygningssti
I Egenskaber vinduet, Java Build-stien standardindstillingerne vises, som vist i figur 3.
Figur 3: Java Build Path
Vælg Projekter fanen og vælg Modulesti , som vist i figur 4. Klik på Tilføj...
Figur 4: Java Build Path>Projekter>Modulepath>Tilføj...
Det påkrævede projektvalg vinduet viser afhængighedsprojektet HelloJavaModule , som vist i figur 5. Vælg HelloJavaModule projekt og klik på OK.
Figur 5: Valg af et projekt, der skal tilføjes
HelloJavaModule projektet føjes til modulstien (se figur 6). Klik på Anvend og luk .
Figur 6: Java-projekt HelloJavaModule tilføjet til Modulepath
Fejlene og røde markeringer fjernes fra Hovedmodulet projekt, som vist i figur 7.
Figur 7: Fejl fjernet fra MainModule
Eksport af Java-hovedprojektet til en JAR-fil
Tilføjelse af HelloJavaModule projekt til byggestien for MainModule projekt fjerner kun opbygnings-/kompileringstidsfejlene. For runtime skal vi eksportere hvert af modulerne til en JAR-fil og tilføje JAR-filerne til runtime-modulstien for, hvornår projektet køres. JAR-filerne skal eksporteres til den samme mappe, så vi er i stand til at konfigurere modulstien uden at referere til moduler på tværs af projekter. Som nævnt før er en multi-modul JAR endnu ikke understøttet, men er planlagt til at blive understøttet i en senere version af Java.
For at eksportere MainModule projekt til en JAR-fil, højreklik på MainModule i Package Explorer og vælg Eksporter , som vist i figur 8.
Figur 8: Package Explorer>MainModule>Eksporter
I Eksporter vindue, skal du vælge Java>JAR-fil , som vist i figur 9, og klik på Næste.
Figur 9: Eksporter>Java>JAR-fil>Næste
I JAR-filspecifikation , vælg den ressource, der skal eksporteres som MainModule , som vist i figur 10. Vælg eksportdestinationen som MainModulemodulesmainmodule.jar . Klik på Næste.
Figur 10: JAR-filspecifikation
Vælg standard JAR-pakkeindstillinger (se figur 11), og klik på Næste.
Figur 11: Valg af pakkemuligheder
Tilpas derefter JAR Manifest-specifikationen , som omfatter valg af klassen for applikationsindgangspunktet. Klik på Gennemse for Hovedklassen , som vist i figur 12.
Figur 12: Hovedklasse>Gennemse
I Vælg Hovedklasse , vælg Hovedmodulet klasse i hovedmodulet pakke, som vist i figur 13, og klik på OK.
Figur 13: Vælger hovedklasse
Med Hovedklassen valgt, skal du klikke på Udfør, som vist i figur 14.
Figur 14: JAR Export>Afslut
mainmodule.jar bliver eksporteret til Hovedmodulet/modulerne bibliotek, som vist i Pakke Explorer i figur 15.
Figur 15: Eksporteret JAR mainmodule.jar
Eksport af Dependency Java-projektet til en JAR-fil
I dette afsnit skal vi eksportere afhængighedsprojektet HelloJavaModule til en JAR-fil i samme mappe som hovedmodulet JAR eksporteres til. For at eksportere HelloJavaModule projekt til en JAR-fil, højreklik på projektet i Package Explorer og vælg Eksporter (se figur 16).
Figur 16: Pakkeudforsker>HelloJavaModule>Eksporter
I Eksporter vindue, skal du vælge Java>JAR-fil , som vist i figur 17, og klik på Næste.
Figur 17: Eksporter>Java>JAR-fil>Næste
I JAR-filspecifikation , vælg den ressource, der skal eksporteres som HelloJavaModule , som vist i figur 18. Vælg eksportdestinationen på samme måde som for hovedmodulet JAR, som er MainModulemodules vejviser. JAR-filnavnet skal være anderledes og er helloJavaModule.jar . Klik på Næste.
Figur 18: JAR-filspecifikation for afhængighed JAR
Vælg standard JAR-pakkeindstillinger, som vist i figur 19, og klik på Næste.
Figur 19: Valg af pakkemuligheder
Tilpas derefter JAR Manifest-specifikationen. Fordi afhængighedsprojektet ikke inkluderer en klasse for et applikationsindgangspunkt, skal du beholde Hovedklassen felt som tomt, som vist i figur 20, og klik på Udfør.
Figur 20: Ingen hovedklasse for afhængighedsprojekt
helloJavaModule.jar bliver eksporteret til Hovedmodulet/modulerne mappe, som vist i Pakke Explorer i figur 21.
Figur 21: Eksporteret JAR helloJavaModule.jar
Tilføjelse af en kørselskonfiguration
For at køre hovedmodulets Java-applikation skal vi oprette en kørselskonfiguration for MainModule projekt. Højreklik på MainModule i Pakkestifinder, og vælg Egenskaber , som vist i figur 22.
Figur 22: Package Explorer>MainModule>Egenskaber
I vinduet Egenskaber skal du vælge Kør/fejlfindingsindstillinger og klik på Ny... for at oprette en ny startkonfiguration, som vist i figur 23.
Figur 23: Egenskaber>Kør fejlfindingsindstillinger>Ny...
I Vælg konfigurationstype , vælg Java-applikation , som vist i figur 24.
Figur 24: Valg af konfigurationstype som Java-applikation
I konfigurationsguiden skal du angive et navn (MainModuleConfig ) i Navn felt og med projektet valgt som MainModule klik på Søg... for Hovedklassen , som vist i figur 25.
Figur 25: Indstilling af Launch Configuration Properties
I Vælg hovedtype , vælg main.module.MainModule type (se figur 26), og klik på OK.
Figur 26: Valg af hovedtype
Med Hovedklassen valgt, skal du klikke på Argumenter fanen for at vælge VM-argumenterne næste, som vist i figur 27.
Figur 27: Vælger fanen Argumenter
Tilføj følgende VM-argumenter til VM-argumentfeltet, som vist i figur 28.
--module-path modules/helloJavaModule.jar;modules/mainmodule.jar -m mainModule/main.module.MainModule
--modulstien arg indstiller modulstien til de to JAR'er for de to moduler. -m arg indstiller modulet. Klik på Anvend , som vist i figur 28.
Figur 28: Anvendelse af kørselskonfigurationsindstillinger
Klik på OK, som vist i figur 29, for at fuldføre kørselskonfigurationen.
Figur 29: Fuldfører kørselskonfiguration
En ny kørselskonfiguration, MainModuleConfig , bliver oprettet, som vist i figur 30. Klik på Anvend og luk i vinduet Egenskaber.
Figur 30: Anvendelse af egenskaber til MainModule Project
Kørsel af hovedmodulets Java-applikation
Dernæst skal vi teste, om hovedmodulet påkalder afhængighedsmodulet ved at køre hovedmodulapplikationen. Højreklik på MainModule.java i Pakkestifinder, og vælg Kør som>Java-applikation (se figur 31).
Figur 31: Package Explorer>MainModule>Kør som>Java-applikation
Outputtet fra Java-applikationen vises i konsollen , som vist i figur 32. Beskeden "Hej fra" fra hovedmodulet kombineres med meddelelsen "Eksporteret Java-modul!" fra afhængighedsmodulet for at udsende meddelelsen "Hej fra eksporteret Java-modul!".
Figur 32: Konsoloutput
Konklusion
I to artikler diskuterede vi brugen af modulafhængigheder i Java 9.