So you installed the newest and greatest JDK, maybe an early release. You have buyer's remorse, and want to go back to an older version of the JDK.
Good luck with that.
First you need to know what versions of the JDK are currently on your OS X box. Check in the following directory.
That should have a list of your installed JDK's.
Alternatively, you can see your installed JDK's using the following command.
This list may include additional JDK's if you have a computer that's been around the block a few times.
Now, the real trick is running the one you want. If you just want to run a specific command using a specific JDK, then you might consider using the java_home tool.
Most developers of Java on OS X don't realize that they have a tool called java_home. It's not on the path by default. It is in the /usr/libexec directory. The java_home tool is very handy for issuing a command to run a Java app with the specified version of Java. For example, if you want to run javac with version 1.8.0_92 you could use the following command.
/usr/libexec/java_home -v 1.8.0_92 --exec javac -version
That would run the javac -version command with the 1.8.0_92 version of Java. The current default version of Java remains unchanged, so if you only need one app running with a different version of Java, the java_home command works great. Also note that running javac -version without the java_home command still runs javac under the default version of Java. So, you don't lose your default Java settings, just because you want to run one program with an older version of Java.
So if you want to change the default version of Java on OS X, where do you do that? That requires a bit of surgery with admin privileges. Also, you're going to need the installer for the JDK version you want as your default OS X JDK.
To change your default JDK, delete the following.
I used these commands.
cd /Library/Internet Plug-Ins
sudo rm -rf JavaAppletPlugin.plugin
sudo rm JavaControlPanel.prefPane
Now run the JDK installer for the Java version you want as your default JDK.
You may find this only partially fixes your JDK version. The Java preferences panel may show your desired Java version, but running /usr/libexec/java_home still spits out the newer version of Java that you don't want as your default version.
If you're having this problem try exporting JAVA_HOME. You can do that permanently by adding the the following command to ~/.bash_profile substituting the version of Java you want for the 1.8 version I inserted in the command.
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
You may find that does great for the Terminal, but does nothing for helping Java based applications like Eclipse to run the correct version of Java. Isn't OS X great? *sigh*
In cases like that you might want to configure your applications to pick the right Java version. In Eclipse, for instance, you can browse into the app package and change the ini file to have a line like the following.
Now, suppose after you've gone through all this effort to make the older version of Java your default, you want to run a command or Java tool only run in a newer version of Java than the older one that you installed? Let's use jshell as an example. If you set your default OS X JDK to Java 8 and JShell is only in Java 9 and above, here's how to run it.
/usr/libexec/java_home -v 9 --exec jshell
There you have the easy ... yeah, right ... way to get a newer version of Java on your OS X box for development purposes, but use an older version for finicky programs like Eclipse that don't do well with change.