A public Java class does not automatically cross every module boundary. In named modules, the caller needs readability and the owner needs to export the package. Reflection can require opens instead. The module path and class path have different deployment rules, which this single-file browser workspace cannot launch.
Application boundaries also include paths and human text. Lexical path normalization handles dot segments but does not resolve symbolic links. UTF-16 length counts char values, not Unicode code points or visible graphemes. Resource bundles search locale candidates and then a base bundle. Here you will implement small, stated portions of those contracts in memory. You will not read local files, load resource bundles from disk or claim that a lexical path check is a complete filesystem security boundary.