Let me try to explain the technical basis of this:
joda-time in version 2.9.9, as indicated in the question, is a non-modular jar, it does not contain module-info.class and does not declare itself an automatic module using Automatic-Module-Name: in its META-INF / MANIFEST.MF
Classes in a real module cannot call classes on the classpath, so you cannot use "require jode.time" in your info module with this version.
Automated modules can use classes on ClassPath. To use classes from a non-modular flask in a real module, you can use a wrapper, which itself is an automatic module.
There is currently version 2.10.1 joda-time, which is an automatic module and declares "Automatic-Module-Name: org.joda.time", so you can use "require org.joda.time" in your real module with this new version.
Now the new jlink tool cannot work directly with non-modular banks or automatic banks, and the maven-jlink plugin is now just a maven wrapper around the jlink tool, translating its configuration parameters into arguments for the jlink tool.
To create a custom Java runtime for projects that use mixed maven dependencies with real modules, automatic modules and non-modular banks, you must know all the dependencies of the system modules of your real modules, automatic modules and non-modular banks and use them. the --add-modules option to communicate with them.
To build system module dependencies, you can use the new jdeps tool with the option --print-module-deps or --list-deps depending on the version of JDK used.
If you use maven for your project, you can automate this task by creating or using the maven plugin, which will do it for you.