I have Java 8. An app wants Java 6 (legacy one). Can I avoid that?
Solution 1:
You most likely can not avoid this. The app you needs to use is built to run on the Java SE 6 framework. Java 8 is not backwards compatible, so you cannot "force" this app to run on Java 8. The only way to avoid installing the Java 6 SE components is if you can somehow avoid using this particular app.
You do not want to install using the Java installer found on the Oracle website. This will result in you having multiple copies of Java on your system, and it will be a mess.
Follow the link in the notice you get, (I think it's this https://support.apple.com/kb/dl1572?locale=en_US) it will take you to an Apple download of a very specific set of "Java SE 6 Legacy runtime components". This can exist alongside your Java 8 installation and is used by certain outdated software (I used to have to install this to use an older version of Adobe Creative Suite before I updated to the CC version).
** I admit I'm not 100% sure that the SE 6 Legacy components are compatible with Mojave, but I think that they are and that there was maybe a notice that Mojave would be the last compatible version of macOS.
Solution 2:
Like most of the answers on the web around this message dialog, the answer from @Morgan Rodgers might be correct in the case that the application really does have a specific need for that ancient version of Java. However, for many applications, a current/modern version of Java will work just fine except that they are wrongly configured.
At least on Mavericks 10.9 through Catalina 10.15, you can edit the JVM capabilites to correctly reflect what your Java 10, 11 etc can do in this file:
/Library/Java/JavaVirtualMachines/<your modern java version>/Contents/Info.plist
You will need to replace the section around line 27 which looks like this:
<key>JVMCapabilities</key>
<array>
<string>CommandLine</string>
</array>
with the correct set of capabilities:
<key>JVMCapabilities</key>
<array>
<string>JNI</string>
<string>BundledApp</string>
<string>WebStart</string>
<string>Applets</string>
<string>CommandLine</string>
</array>
As 1 mentions, the editing may need to be done via text editor using a temporary copy, which is moved back into place using sudo. Once copied back, don't forget to check the timestamp and content of the updated file reflect your edit and reboot.