These "new" JDK 8 / 64-bit behavior is so obfuscated, I could not guess why my application would not start, because I had the JDK (with the private JRE) and every path variable setup, still no start.
After some time I installed JRE8 alone and it worked. Firstly the regedit - keys are only written by the public JRE.... Ok.
Then I wanted to know which Runtime the app used, I renamed all java* .exe, yet it still worked64-bitI renamed all-new regedit keys. It still worked...
End of story: with Windows 64 the regedit keys are in
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft
(32bit) and
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft
(64bit)
and my app worked because
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment\1.8\RuntimeLib\
pointed to jvm.dll which referenced a symlink. I need a beer, I want another Job :-)
Here is a nice link, which explains the Regedit-Keys and the different "discovery methods" which Java uses to
find the newest installed version:
http://mindprod.com/jgloss/registry.html
Still the SYSLink - Change with JDK8 seems to be an undocumented change which was introduced before JRE8u171.
My sysLink Path was C:\Program Files (x86)\Common Files\Oracle\Java
with was actually a Junction to a subdirectory.
And the JDK8 installer copies the java*.exe files into Windows\System32\ btw.
More Infos:
Sorry for my rant, I'm so frustrated right now. I hope it helps somebody else.