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

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

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

Модули в Java 9

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

package com.metanit.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!");
	}
}

Для вывода сообщения используется статический метод 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 можно указать все используемые модули.

Далее скомпилируем модуль и запустим его на выполнение. После запуска нам отобразится графическое окно:

requires в модулях в Java 9
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850