Debian java policy and modular jar files
The Debian java policy appears to need some clarification regarding
how to handle modular jar files. A few things don't work the way
one might expect with Java 11 (the default jdk on my system).
1. If you create a file with a version string such as
libfoo-1.1.0.jar and symbolic link libfoo.jar that
points to libfoo-1.1.0.jar, the following commands
will cause java to crash:
java -p /usr/share/java --list-modules
java -p /usr/share/java --describe-module MODULE
The problem is that, when java sees two files that contain
the same module, java throws an exception and exits, even
if one is merely a symbolic link pointing to another.
2. If the package xalan2, version 2.7.2 has been installed,
the previous commands will also fail. Java tries to convert
xalan2 to an automatic module. Unfortunately, one of the
META-INF/services files contains the name of a class that
does not exist. Java treats this as a fatal error instead
of ignoring the file or skipping that entry and printing a
warning.
I'm currently using openjdk, version 11.0.1 (build 11.0.1+13-Ubuntu-
2ubuntu1).
The question is whether there is a standard location for modular
JAR files. I found a PDF file suggesting /usr/share/java/modules
but that document is quite a few years old and I couldn't find any
other documents corroborating that suggestion.
Reply to: