这是奇怪的事情。
考虑这两个最新版本的java环境:
jre-8u11-windows-i586.exe
jre-8u20-windows-i586.exe
安装8u11。它将它放入程序文件(x86)\ java \ jre8
安装8u20。它将它放入程序文件(x86)\ java \ jre1.8.0_20
我不知道命令在rev 11和rev 20之间何时发生了变化,但是看到我需要在配置文件中预设JAVA_HOME(对于将在之后安装的Windows服务),这有点令人讨厌。曾经是java 1.8的任何早期版本将安装到jre8文件夹......似乎不再是。为什么会改变?
答案 0 :(得分:1)
Oracle切换到其他安装程序。
一如既往,这种巨大变化会产生副作用。现在路径包含完整版本号的事实很可能是完全无意的。
提示:您可以从注册表中提取路径(此示例适用于32位窗口)
[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8]
"JavaHome"="C:\\Program Files\\Java\\jre1.8.0_20"
关于安装程序更改:虽然安装程序仍然是installer.exe中msi内的installer.exe,但许多内容已更改,一些已得到改进。例如,msi现在是自包含的(没有用于文件的单独cab存档,没有单独的mst文件用于翻译到其他语言,翻译现在也影响主菜单条目)。
然而,旧的msi可以用7zip提取,新的有一个空文件表,只有两个二进制文件installerexe和uninstallerexe。
这些只是一些明显的症状,内部必须有更多的变化。
答案 1 :(得分:1)
Oracle一直在尝试实施规则集文件来解决Java产品系列固有的问题;也就是说,它能够与其他版本的自身合作。规则集需要一个类似于jre1.8.0_20的特定版本,以便它们可以拦截该特定版本的调用。使用像jre8这样的名称将无法获得足够的规则。
更糟糕的是,这样的改变是一个重大改变,但他们将其置于次要版本中。许多公司都对这些类型的实施措施措手不及。