Module dependente
Unele module pot depinde de altele, de exemplu, le pot utiliza într-un fel sau altul. Să luăm ca exemplu proiectul din tema precedentă cu un modul simplu:

În fișierul Hello.java, vom defini afișarea mesajului nu pe consolă, ci într-o fereastră grafică, care este furnizată de infrastructura Swing:
package com.fdc.hello;
import javax.swing.JOptionPane;
public class Hello {
public static void main(String[] args) {
//System.out.println("Hello Demo Module!");
JOptionPane.showMessageDialog(null, "Hello Demo Module!");
}
}
Pentru afișarea mesajului se folosește metoda statică showMessageDialog() a clasei JOptionPane, care se află în pachetul javax.swing.JOptionPane. Pentru a folosi această clasă, o importăm la începutul fișierului.
Cu toate acestea, deoarece utilizăm această clasă într-un modul separat, simpla importare a clasei sau a întregului pachet nu este suficientă. Trebuie să indicăm modulului nostru să folosească modulul în care este definită această clasă.
Cum putem afla în ce modul se află o anumită clasă? Dacă este vorba de clase încorporate, trebuie să consultăm documentația, în special pentru Java (JDK) 9+. La începutul descrierii clasei, de obicei, este menționat modulul din care face parte.

Deci, documentația ne informează că clasa JOptionPane se află în modulul java.desktop. Acum vom indica modulului nostru că trebuie să folosească modulul java.desktop. Pentru aceasta, mergem la definiția modulului în fișierul module-info.java și îl modificăm după cum urmează:
module demo {
requires java.desktop;
}
După operatorul requires se specifică numele modulului de care depinde modulul nostru. În mod similar, dacă modulul nostru folosește mai multe alte module, putem indica toate modulele utilizate folosind operatorul require.
Apoi, compilăm modulul și îl rulăm. După lansare, ne va apărea o fereastră grafică:
