java -p out -m farm.vet/farm.vet.VetMain
jar -cvf mods/farm.vet.jar -C out/ .
added manifest
adding: farm.animals/(in = 0) (out= 0)(stored 0%)
adding: farm.animals/farm/(in = 0) (out= 0)(stored 0%)
adding: farm.animals/farm/Animal.class(in = 360) (out= 246)(deflated 31%)
adding: farm.animals/farm/cattle/(in = 0) (out= 0)(stored 0%)
adding: farm.animals/farm/cattle/Cattle.class(in = 829) (out= 475)(deflated 42%)
adding: farm.animals/farm/cattle/Cow.class(in = 999) (out= 548)(deflated 45%)
adding: farm.animals/module-info.class(in = 195) (out= 149)(deflated 23%)
adding: farm.owner/(in = 0) (out= 0)(stored 0%)
adding: farm.owner/farm/(in = 0) (out= 0)(stored 0%)
adding: farm.owner/farm/owner/(in = 0) (out= 0)(stored 0%)
adding: farm.owner/farm/owner/Owner.class(in = 1569) (out= 853)(deflated 45%)
adding: farm.owner/module-info.class(in = 200) (out= 148)(deflated 26%)
adding: farm.vet/(in = 0) (out= 0)(stored 0%)
adding: farm.vet/farm/(in = 0) (out= 0)(stored 0%)
adding: farm.vet/farm/vet/(in = 0) (out= 0)(stored 0%)
adding: farm.vet/farm/vet/VetMain.class(in = 710) (out= 448)(deflated 36%)
adding: farm.vet/module-info.class(in = 194) (out= 143)(deflated 26%)
java -p mods -m farm.vet/farm.vet.VetMain
Error: Could not find or load main class farm.vet.VetMain in module farm.vet
jar --describe-module --file mods/farm.vet.jar
No module descriptor found. Derived automatic module.
farm.vet automatic
requires java.base mandated
contains farm.animals
contains farm.animals.farm
contains farm.animals.farm.cattle
contains farm.owner
contains farm.owner.farm.owner
contains farm.vet
contains farm.vet.farm.vet
There can only be one module per JAR file, since module-info.class
must be in the root of the JAR file.
Try:
jar -cvf mods/farm.vet.jar -C out/farm.vet/ .
jar -cvf mods/farm.owner.jar -C out/farm.owner/ .
jar -cvf mods/farm.animals.jar -C out/farm.animals/ .
Based on Project Jigsaw: Module System Quick-Start Guide:
A modular JAR is a regular JAR file that has a module-info.class in its top-level directory.
and The jar Command description:
An archive becomes a modular JAR when you include a module descriptor, module-info.class, in the root of the given directories or in the root of the .jar archive.
I got a bit confused by "root of the given diretories" being mentioned above