>> If there is a class in a versioned directory that is not in the base >> directory, then that class must not be public or protected. It’s not part >> of the public interface of the multi-release jar. > It's also a modular JAR and so if the class is not in an exported package > then it's okay for it to be public.
So, if a class is not in an exported package, it’s in a concealed package, is that right? So, should any classes in a concealed package, public or not, be included in the versionedStream used in jlink? > > >> It exists purely because another class in the same versioned directory >> depends on it. If we are creating a versionedStream for the version that >> the non-public class is in, it will be in finalNames, otherwise it won’t be. >> I believe the code is correct here. >> >> New concealed packages can be added in a versioned section of the jar file >> created by jar tool. Should classes in concealed packages be added to >> finalNames or not? Or stated differently, for jlink, should a >> versionedStream contain entries in concealed packages? >> > Er, I thought the plan was for the set of concealed packages to be the same. > It's okay for the ConcealedPackages in the base section to include "empty" > packages. I wasn’t involved with that decision. Chris wrote that code, perhaps he can comment.