Зависимые модули

Последнее обновление: 02.11.2025

Одни модули могут зависить от других, например, как-то использовать их. Например, возьмем проект из прошлой темы с простейшим модулем:

Модули в Java

В данном случае модуль назвается "demo" и располагается в одноименной папке. В этой же папке лежит файл определения модуля - module-info.java. А весь код программы располагается в папке "com/metanit/hello" в файле "Hello.java".

В файле Hello.java определим вывод сообщения не на консоль, а через графическое окно, которое предоставляется инфраструктурой Swing:

package com.metanit.hello;

import javax.swing.JOptionPane;

public class Hello{
	
	public static void main(String[] args){
		//System.out.println("Hello METANIT.COM!");
		JOptionPane.showMessageDialog(null, "Hello Demo Module!");
	}
}

Для вывода сообщения используется статический метод showMessageDialog() класса JOptionPane, который расположен в пакете javax.swing.JOptionPane. Чтобы использовать данный класс, он импортируется в начале файла. Однако поскольку мы используем данный класс в отдельном модуле, то просто импортировать класс или целый пакет недостаточно. Надо указать нашему модулю, чтобы он использовал модуль, где определен данный класс.

Как узнать, в каком модуле расположен тот или иной класс? Если речь идет о встроенных классах, то для этого надо смотреть документацию, причем сразу по Java (JDK) 9+. В начале описания класса, как правило, указывается, к какому модулю он принадлежит.

поиск модулей в Java 9

Итак, документация нам сообщает, что класс JOptionPane расположен в модуле java.desktop. Теперь укажем нашему модулю, что нам надо использовать модуль java.desktop. Для этого перейдем к определению модуля в файле module-info.java в корневой папке модуля и изменим его следующим образом:

module demo {
    requires java.desktop;
}

После оператора requires указывается название модуля, от которого зависит наш модуль. Соответственно если наш модуль использует несколько других модулей, то также с помощью оператора require можно указать все используемые модули.

Далее скомпилируем модуль и запустим его на выполнение.

eugene@Eugene:/java$ javac demo/module-info.java demo/com/metanit/hello/Hello.java
eugene@Eugene:/java$ java  --module-path demo --module demo/com.metanit.hello.Hello

После запуска нам отобразится графическое окно:

requires в модулях в Java 9
Помощь сайту
Юмани:
410011174743222
Номер карты:
4048415020898850
Morty Proxy This is a proxified and sanitized view of the page, visit original site.