То, что я сделал * Предложение 1002 *
@ nullpointer полезно.Я использовал java --module-path out --module packt.addressbook/packt.addressbook.Main
для отладки, увидеть путь к модулю и обнаружил:
root packt.addressbook file:///D:/ebooks/Modular%20Programming%20in%20Java%209/
ce-code/p205_Implementing_sorting_services/out/production/packt.addressbook/
packt.addressbook requires packt.sortutil file:///D:/ebooks/Modular%20Programmi
n%20Java%209/practice-code/p205_Implementing_sorting_services/out/production/pa
rtutil/
packt.addressbook requires java.logging jrt:/java.logging
packt.addressbook requires packt.contact file:///D:/ebooks/Modular%20Programmin
%20Java%209/practice-code/p205_Implementing_sorting_services/out/production/pac
tact/
packt.contact requires java.xml jrt:/java.xml
...
Модуль packt.sort.bubblesort
и packt.sort.javasort
не присутствовали в пути модуля.Затем я проверил выходную папку и увидел, что эти 2 модуля провайдера не были скомпилированы.Я выяснил, что причина в том, что эти 2 модуля не читаются другими модулями и поэтому опущены во время компиляции.
Когда я использовал команду D:\programs\java\jdk-11.0.2\bin\javac -d out --module-source-path .\*\src -m packt.addressbook
, он ищет модули, от которых зависит модуль packt.addressbook
, включаясервисный модуль packt.sortutil
, но поскольку packt.sortutil
и другие модули не зависят от 2 сервисных модулей, packt.sort.bubblesort
и packt.sort.javasort
, они опущены.На самом деле они зависят от сервисного модуля.
Решения
Поэтому я перешел к команде, чтобы вручную скомпилировать эти 2 модуля: javac -d out --module-source-path .\*\src -m packt.addressbook,packt.sort.bubblesort,packt.sort.javasort
.И это исправлено.
Существует еще один проект , который использует maven для решения этой проблемы.POM модуля пользователя (packt.addressbook
в моем примере) зависит от модуля поставщика (packt.sort.bubblesort
и packt.sort.javasort
в моем примере):
<dependency>
<groupId>javax0</groupId>
<artifactId>Provider</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
Я не уверен, является ли это лучшимхотя попрактикуйтесь.
Последующие действия
Если кто-то знает, как вручную добавлять модули для компиляции или автоматически обнаруживать модули провайдера, предоставляющие 'сервисный модуль для компиляциивнутри IDE, такой как IntelliJ IDEA, пожалуйста, дайте мне знать.