代码之家  ›  专栏  ›  技术社区  ›  RBT

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

  •  4
  • RBT  · 技术社区  · 7 年前

    在上的windows 10机器上安装SQL Server 2017 Developer edition时,我无法通过以下规则 Feature Rules 屏幕:

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

    我得到以下错误:

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

    enter image description here

    我的机器上安装了足够高的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)
    

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

    6 回复  |  直到 7 年前
        1
  •  6
  •   RBT    7 年前

    我在2017年12月初发表的一篇文章中充分解释了根本原因,并提供了注册表编辑解决方案。如本文所述,SQL Server 2016和2017中的问题相同 here .

    简要总结一下,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替换所有出现的JRE 环境您不得更改小写jre引用。

    例如,更改 HKEY\U LOCAL\U机器\软件\ JavaSoft\JRE HKEY\U LOCAL\U机器\软件\ JavaSoft \ Java运行时环境

        2
  •  3
  •   UCDMetalHead    7 年前

    引言:

    我也有同样的问题,我花了很长时间才解决。我从最新版本的Java开始(可从以下网址获得: http://www.oracle.com/technetwork/java/javase/downloads/index.html )并安装了JRE、JRE服务器和JDK;首先单独,然后完全遵循此处的说明: https://docs.oracle.com/javase/9/install/installation-jdk-and-jre-microsoft-windows-platforms.htm#JSJIG-GUID-A7E27B90-A28D-4237-9383-A58B416071CA )但一直收到相同的错误消息。

    解决方案:

    1. 卸载了我在Windows 10上安装的所有三个Java 9
    2. 删除了环境变量中的所有Java路径(位于系统属性的“高级”选项卡中);打开“开始”菜单后,通过搜索env轻松找到它,并在搜索结果中选择“编辑系统环境变量”
      • 在系统属性/高级中,在“系统变量”中选择“Path”变量,并删除该变量中的所有Java路径。
    3. 重新启动电脑并从以下路径下载JRE 7(JRE-7u80-windows-x64.exe): http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
    4. 运行exe文件,完成安装后,返回系统属性并将新的Java位置添加到路径。您应该添加bin文件夹的位置;在我的计算机中,它是:C:\ProgramFiles\java\jre7\bin
    5. 我还启用了Java访问桥。Java安装指南:“默认情况下,Java访问桥被禁用。要启用它,请运行以下命令(其中%JRE\u HOME%是JRE的目录):%JRE\u HOME%\bin\jabswitch-enable”
    6. 重新启动我的系统
    7. PolyBase易于安装。

    然后,我将Java重新升级到9。

        3
  •  1
  •   FLICKER    7 年前

    我尝试安装SQL Server 2017,包括PolyBase。除了安装JRE 8.144之外,没有任何解决方案对我有效

    JRE 8.144 Download

        4
  •  0
  •   RBT    6 年前

    警告:这是一个注册表修复程序,因此请自行尝试!

    情境:我已经安装了JDK,它比安装中需要的版本要高得多。

    查看安装日志,我发现:

    SQLPolyBase: Could not find registry setting HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion.
    

    解决方案:转到注册表编辑器。创建键“Java Runtime Environment”,并在以下键下复制所有内容:

    HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JRE
    

    完成后,运行扫描应该会成功。

        5
  •  0
  •   RBT    6 年前

    我今天刚遇到这个问题,在过去的5个小时里我一直在寻找解决方案,但我确实在这里找到了它,但有一种“给出解决方案的糟糕方式”

    基本上,解决方案是转到注册表编辑器(打开run并键入regedit),然后转到第三个选项,即“HKEY\u LOCAL\u MACHINE”和>软件>JAVASOFT>JRE您将发现名为JRE的文件,只需将名称更改为“Java Runtime Environment”!! 这基本上是因为SQL server安装的问题是,它没有找到名为“Java Runtime Environment”的文件夹,而是找到了JRE,这只是一个快捷方式,该快捷方式是在上次更新5和更高版本时出现的,这就是为什么下载并安装JRE 5或更高版本时会出错!

        6
  •  0
  •   Sql Surfer    6 年前

    约翰·保罗·库克(John Paul Cooks)的上述回答和支持文章对JDK 11和SQL 2017非常有效

    我添加此评论是为了显示流程没有改变的特定JDK 11值。

    JDK 11简单注册表技巧适用于SQL 2017

    1: 从注册表导出JDK密钥 HKEY\U LOCAL\U机器\软件\ JavaSoft\JDK

    2: 在文本中。导出的reg文件用Java Runtime Environment替换键名部分JDK。只使用键名,而不是像在值中那样使用文本JDK。

    三: 将导入注册表。您刚刚编辑的注册表文件。 现在您有了真正的JDK密钥和一个JDK密钥及其所有值的副本。第二个新的JDK密钥被命名为Java Runtime Environment,而不是JDK。

    Both Original and New Key for JDK

    真正的关键是JDK。第二个关键点是Java Runtime Environment,让SQL Server进行安装。第二个新键与每个子键的JDK键具有完全相同的项值-只有JDK键的名称发生了更改。