安装SQL Server 2017 Developer Edition时Oracle JRE规则失败

RBT*_*RBT 4 sql-server installation sql-server-2017

Feature Rules屏幕上的Windows 10计算机上安装SQL Server 2017 Developer Edition时,我无法通过以下规则:

  • Polybase需要Oracle JRE 7 Update 51(64位)或更高版本

我收到以下错误:

此计算机未安装Oracle Java SE运行时环境版本7更新51(64位)或更高版本.Oracle Java SE运行时环境是由第三方提供的软件.Microsoft不授予您此类第三方软件的权利.您有责任并且必须单独查找,阅读和接受适用的第三方许可条款.要继续,请从https://go.microsoft.com/fwlink/?LinkId=526030下载Oracle SE Java Runtime Environment .

在此输入图像描述

我的机器上安装了足够高的Java版本(9.x).我运行了命令java -XshowSettings:properties -version,它在我的盒子上提供了与Java安装相关的以下细节:

Property settings:
    awt.toolkit = sun.awt.windows.WToolkit
    file.encoding = Cp1252
    file.encoding.pkg = sun.io
    file.separator = \
    java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
    java.awt.printerjob = sun.awt.windows.WPrinterJob
    java.class.path =
    java.class.version = 53.0
    java.home = C:\Program Files\Java\jre-9.0.1
    java.io.tmpdir = C:\Users\RASIK~1.BIH\AppData\Local\Temp\
    java.library.path = C:\ProgramData\Oracle\Java\javapath
        C:\Windows\Sun\Java\bin
        C:\Windows\system32
        C:\Windows
        C:\ProgramData\Oracle\Java\javapath
        C:\Program Files (x86)\Intel\iCLS Client\
        C:\Program Files\Intel\iCLS Client\
        C:\Windows\system32
        C:\Windows
        C:\Windows\System32\Wbem
        C:\Windows\System32\WindowsPowerShell\v1.0\
        C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static
        C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL
        C:\Program Files\Intel\Intel(R) Management Engine Components\DAL
        C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT
        C:\Program Files\Intel\Intel(R) Management Engine Components\IPT
        C:\Program Files\Microsoft SQL Server\130\Tools\Binn\
        C:\Program Files\dotnet\
        C:\Program Files\Git\cmd
        C:\Program Files\nodejs\
        C:\Program Files\1E\NomadBranch\
        C:\Program Files\TortoiseSVN\bin
        C:\Users\rasik.bihari\AppData\Local\Microsoft\WindowsApps
        C:\Users\rasik.bihari\AppData\Roaming\npm
        .
    java.runtime.name = Java(TM) SE Runtime Environment
    java.runtime.version = 9.0.1+11
    java.specification.name = Java Platform API Specification
    java.specification.vendor = Oracle Corporation
    java.specification.version = 9
    java.vendor = Oracle Corporation
    java.vendor.url = http://java.oracle.com/
    java.vendor.url.bug = http://bugreport.java.com/bugreport/
    java.version = 9.0.1
    java.vm.compressedOopsMode = Zero based
    java.vm.info = mixed mode
    java.vm.name = Java HotSpot(TM) 64-Bit Server VM
    java.vm.specification.name = Java Virtual Machine Specification
    java.vm.specification.vendor = Oracle Corporation
    java.vm.specification.version = 9
    java.vm.vendor = Oracle Corporation
    java.vm.version = 9.0.1+11
    jdk.debug = release
    line.separator = \r \n
    os.arch = amd64
    os.name = Windows 10
    os.version = 10.0
    path.separator = ;
    sun.arch.data.model = 64
    sun.boot.library.path = C:\Program Files\Java\jre-9.0.1\bin
    sun.cpu.endian = little
    sun.cpu.isalist = amd64
    sun.desktop = windows
    sun.io.unicode.encoding = UnicodeLittle
    sun.java.launcher = SUN_STANDARD
    sun.jnu.encoding = Cp1252
    sun.management.compiler = HotSpot 64-Bit Tiered Compilers
    sun.os.patch.level =
    sun.stderr.encoding = cp850
    sun.stdout.encoding = cp850
    user.country = IN
    user.dir = C:\Users\rasik.bihari
    user.home = C:\Users\rasik.bihari
    user.language = en
    user.name = Rasik.Bihari
    user.script =
    user.timezone =
    user.variant =

java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
Run Code Online (Sandbox Code Playgroud)

不确定此安装程序还在寻找什么.还有其他人遇到过这个错误吗?一个明显的解决方案是跳过PolyBase Query Service for External Data功能,即在Feature Selection屏幕上取消选择,但我不想这样做.我想解决这个问题,为什么当我的机器配置满足所有先决条件时它仍然在中断安装?

小智 6

我完全解释的根本原因,并提供了一个文章,我发表在2017年12月初注册表编辑解决方法的问题是在SQL Server 2016和2017年一样的文章中提到这里.

快速摘要是Oracle在JRE版本8之后更改了注册表项结构.SQL Server 2016和2017安装程序将查找在以下位置找到的JRE版本7注册表项名称: HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

假设您要使用JRE版本9并且您不想安装JRE版本7.您必须导出找到的JRE 9版本密钥HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JRE并编辑它们以使密钥名称与JRE 7匹配.有三个要重命名的键.导入已编辑的密钥.这样,安装程序将找到指向JRE 9位置的版本7键名.

引用文章中关于编辑键名的部分:

您希望用Java Runtime Environment替换所有出现的JRE.您不得更改小写jre引用.

例如,更改HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JREHKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

  • 欢迎提供解决方案的链接,但请确保您的答案在没有它的情况下有用:[在链接周围添加上下文](// meta.stackexchange.com/a/8259),以便您的其他用户能够了解它是什么以及为什么它存在,然后引用您链接的页面中最相关的部分,以防目标页面不可用.[可能会删除多于链接的答案.](// stackoverflow.com/help/deleted-answers) (3认同)