> Please review this PR to support _JEP 463 Implicitly Declared Classes and > Instance Main Method (Second Preview)_ in JavaDoc. > > [JEP 463](https://openjdk.org/jeps/463) is the next iteration of [JEP > 445](https://openjdk.org/jeps/445), which introduced the ability to have a > source file as a launchable, "classless" method bag > > > % cat HelloWorld.java > /** Run me. */ > void main() { > print("Hello, world!"); > } > > /** Shortcut for printing strings. */ > void print(String arg) { > System.out.println(arg); > } > > > which the compiler interprets as a familiar class > > > final class HelloWorld { > > HelloWorld() { > } > > /** Run me. */ > void main() { > print("Hello, world!"); > } > > /** Shortcut for printing strings. */ > void print(String arg) { > System.out.println(arg); > } > } > > > ### How JEP 445 works with JavaDoc today > > In JDK 21, javadoc can document such a file **without any changes to the > javadoc tool**. The only thing that the user needs to do is to make sure that > the following options are present: > > * `--enable-preview` and `--source=21` > * `-package` > > The first pair of options tells javadoc to use preview features, which JEP > 445 is one of. Without these preview-related options, javadoc will raise the > following error: > > > % javadoc --version > javadoc 21 > > % javadoc HelloWorld.java -d /tmp/throwaway > Loading source file HelloWorld.java... > HelloWorld.java:2: error: unnamed classes are a preview feature and are > disabled by default. > void main() { > ^ > (use --enable-preview to enable unnamed classes) > 1 error > > > The second option, `-package`, tells javadoc to document classes that are > public, protected, or declared with package access (colloquially known as > "package private"). Without this option, javadoc will only document public > and protected classes, which do not include the interpreted class: > > > % javadoc --enable-preview --source=21 HelloWorld.java -d /tmp/throwaway > Loading source file HelloWorld.java... > Constructing Javadoc information... > error: No public or protected classes found to document. > 1 error > > > When those additional options are present, javadoc does its job: > > > % javadoc --enable-preview --source=21 -package HelloWorld.java -d > /tmp/throwaway > Loading source file HelloWorld.java... > Constructing Javadoc information... > Creating destination directory: "/tmp/throwaway/" > Building index for all the packages and classes... > Standard Doclet version 21+35-LTS-2513 > Building tree for all the packages and classes... > Generating /tmp/throwaway/HelloWorld.htm...
Pavel Rappo has updated the pull request incrementally with one additional commit since the last revision: Simplify test to cover Windows ------------- Changes: - all: https://git.openjdk.org/jdk/pull/16853/files - new: https://git.openjdk.org/jdk/pull/16853/files/876f4794..cc15d5cb Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=16853&range=05 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=16853&range=04-05 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/16853.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/16853/head:pull/16853 PR: https://git.openjdk.org/jdk/pull/16853