> 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 with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision: - Update manpage - Merge branch 'master' into 8308715 - Remove ugly dependency on Utils - Improve test - Merge branch 'master' into 8308715 - Initial commit ------------- Changes: - all: https://git.openjdk.org/jdk/pull/16853/files - new: https://git.openjdk.org/jdk/pull/16853/files/3702638f..876f4794 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=16853&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=16853&range=03-04 Stats: 41036 lines in 1092 files changed: 21919 ins; 14869 del; 4248 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