[see all posts]
Over the US’s Thanksgiving break, I started playing around with “modern” Java. Around 5 years ago it was my primary language for all development (I worked in middle ware). Since then, I’ve pretty much only written Go. After setting up Intellij as my Java IDE, I quickly ran into a problem. I could not figure out where download the JDK JavaDocs. I wanted this as I use the docs quite a bit to traverse through various classes and functions. Instead, when I hit the “external docs” shortcut, nothing happened. This post covers how to find the JDK JavaDocs and set it up in Intellij. While these examples focus on Intellij, you may find this information useful for your own IDE.
First, I should acknowledge it is easy to point Intellij at the JDK JavaDocs remotely. The URL Oracle uses consistent URL pathing. For example, to get the Java 13 docs, you can visit https://docs.oracle.com/en/java/javase/13/docs/api. To load this into Intellij, you open
File > Project Structure. From there you select your SDK and add a remote documentation path, as shown below.
You’ll then get an input box where you can put an API URL like the one above and done! However, I am not a fan of remote documentation. I fly on planes and have spotty connection all the time. I want to quickly load the documentation locally.
Given this download exists on Oracle’s website, you can bet it’ll be a pain. If not egregious to find, they’ll probably make you sell your first born and register with their marketing department before you can even think about viewing the docs. Sigh. However, here is how you can fast track it. As far as I can tell, Oracle only keeps LTS and current Java version docs linked on their site. I did find some StackOverflow posts with links to things like Java 12…but you may just want to choose the closest version.
In my case, I’m using Java 13. So I headed to the Java SE Development Kit Downloads page at https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538.html.
Looking at the page, you’ll notice a Documentation tab. But that would be too easy. You won’t find downloadable documentation there. Instead you’ll find a bunch of random things including but not limited to binary code licensing information…rolls eyes.
Ignore that page and head to the “main” download page, which you can find at https://www.oracle.com/technetwork/java/javase/downloads/index.html. From this page, if you scroll to the bottom, you’ll see an Additional Resources section.
Click the download button for your version of Java. Of course, you’re going to have to accept a license agreement (goodbye first born), but then you should get a zip of all the JavaDocs.
First, you’ll want to find a good location to store the docs. I unzipped them in my
$JAVA_HOME, located at
/usr/lib/jvm/java-13-jdk. Unzipping places files in a
docs directory, which is perfect for me.
unzip ~/Downloads/jdk-13.0.1_doc-all.zip -d /usr/lib/jvm/java-13-jdk
ls -l /usr/lib/jvm/java-13-jdk 4096 Nov 29 20:34 . 4096 Nov 29 17:57 .. 4096 Nov 29 17:59 bin 26 Nov 29 17:56 conf -> ../../../../etc/java13-jre 4096 Oct 6 05:36 docs 4096 Nov 29 17:59 include 4096 Nov 29 17:59 jmods 27 Nov 29 17:56 legal -> ../../../share/licenses/jre 4096 Nov 29 17:59 lib 1235 Nov 29 17:56 release
In Intellij, return to
File > Project Structure > SDKs > Documentation Paths and click the plus sign. You can then select the location of your new
docs folder as seen below.
Now, if you use something in the standard library, you should be able to call for external documentation.
Upon selecting this option, a browser window will open pointed to the JavaDocs on your local machine.
One last thing I’ll leave you with. If you’re using Maven, it is really easy to generate the JavaDocs for your dependencies/libraries so you can rely on the same external documentation abilities. For example, I’m using the Spring Framework in my current project. To download the documentation, open the maven panel from the right side-bar. From there, click the download button and choose to download documentation. There is also an option to download documentation and sources, which I recommend as it’ll prevent you from needing to decompile bytecode in order to goto code in the libraries you are calling.
With this complete, you can now select code or annotations from a library you’re calling and produce the relevant JavaDoc. As seen below.
I hope you found this post useful! Or at least educational as to how hard setting up something as simple as local JDK docs can be. Good luck with your Java adventures!