安装 SQL Server 2017 开发人员版时 Oracle JRE 规则失败

Posted

技术标签:

【中文标题】安装 SQL Server 2017 开发人员版时 Oracle JRE 规则失败【英文标题】:Oracle JRE rule failure while installing SQL Server 2017 Developer edition 【发布时间】:2018-05-03 07:34:10 【问题描述】:

Feature Rules 屏幕上的 Windows 10 机器上安装 SQL Server 2017 开发人员版时,我无法通过以下规则:

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

我遇到以下错误:

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

我的机器上安装了足够高的 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 屏幕上取消选择它,但我不想这样做。我想解决这个问题,为什么当我的机器配置满足所有先决条件时它仍然会中断安装?

【问题讨论】:

【参考方案1】:

我在 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。您必须导出在 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JRE 找到的 JRE 9 版本密钥并编辑它们以使密钥名称与JRE 7. 有三个要重命名的键。导入已编辑的密钥。这样,安装程序将找到指向 JRE 9 位置的版本 7 键名。

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

您想用 Java Runtime 替换所有出现的 JRE 环境。您不得更改小写的 jre 引用。

例如,将HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JRE 更改为HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

【讨论】:

欢迎提供解决方案链接,但请确保您的答案在没有它的情况下有用:add context around the link 这样您的其他用户就会知道它是什么以及为什么会出现,然后引用最相关的您链接到的页面的一部分,以防目标页面不可用。 Answers that are little more than a link may be deleted. 如果有人在他的机器上安装了其他依赖于更高/最新版本的 JRE 的软件,这肯定是 解决方案。所以他们不能继续使用 JRE 的 v7。就我而言,我没有这样的限制,所以我继续使用 v7,它不是 JRE 的最新版本。 这应该是公认的答案。这适用于 Java 10。谢谢。 这个解决方案适用于 Java 11 - 2019 年 1 月。 - 更多详细信息在下面的评论中作为答案。【参考方案2】:

简介:

我遇到了同样的问题,我花了很长时间来解决它。我从最新版本的 Java 开始(可在此处获得:http://www.oracle.com/technetwork/java/javase/downloads/index.html)并安装了 JRE、JRE Server 和 JDK;首先单独然后完全按照此处的说明进行操作:https://docs.oracle.com/javase/9/install/installation-jdk-and-jre-microsoft-windows-platforms.htm#JSJIG-GUID-A7E27B90-A28D-4237-9383-A58B416071CA) 但不断收到相同的错误消息。

解决方案:

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

然后,我将 Java 重新更新到 9。 希望这对您的情况也有帮助!

【讨论】:

这非常糟糕。先决条件是 JRE 7(更新 51)或更高版本,但它在您拥有 JRE 7(恰好 7)时才有效。剪切魔法!!我认为 9 比 7 大:P。感谢您的发现。我只是从您在步骤 3 中推荐的链接中卸载了 JRE 9 并安装了 JRE 7(更新 80),此后一切都非常顺利。 哈哈,我刚回来发表免责声明,我不确定是否需要我帖子中的每一步;我只是想完整记录我所做的事情,尤其是在因无法在 Java 9 下修复它而感到非常沮丧之后。很高兴看到您能够修复您的问题,也更高兴看到只需卸载 9 并安装 7 即可修复它。所以,伙计们,不要关注我最初回复的所有细节!做 RBT 做的事…… 下面的 John Paul Cook 回答很有效,现在似乎在 2019 年最相关。【参考方案3】:

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

JRE 8.144 Download

【讨论】:

【参考方案4】:

警告:这是一个注册表修复程序,因此请您自担风险!

情况:我已经安装了 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】:

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

基本上解决方案是进入注册表编辑器(打开运行并键入 regedit)并进入第三个选项“HKEY_LOCAL_MACHINE”和>SOFTWARE>JAVASOFT>JRE,您会发现名为 JRE 的文件只需更改“Java Runtime Environment”的名称! 基本上就是这样,因为 SQL Server 安装问题是它没有找到名为“Java Runtime Environment”的文件夹,而是找到了 JRE,这只是一个快捷方式,而且快捷方式附带最新更新 5 或更高版本,这就是为什么您在下载和安装 JRE 5 或更高版本时会出错!

【讨论】:

【参考方案6】:

John Paul Cooks 上面的回答和支持文章非常适合 JDK 11 和 SQL 2017

我添加了这条评论来显示特定的 JDK 11 值——过程没有改变。

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

1: 从注册表中导出 JDK 密钥 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK

2: 在导出的文本 .reg 文件中,将密钥名称部分 JDK 替换为 Java 运行时环境。只是键名——在其他任何地方都没有像在值中那样使用文本 JDK。

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

真正的 Key JDK 没有任何作用。名为 Java Runtime Environment 的第二个键用于让 SQL Server 进行安装。第二个新键与每个子键的 JDK 键具有完全相同的项值 - 它只是更改的 JDK 键的名称。

【讨论】:

以上是关于安装 SQL Server 2017 开发人员版时 Oracle JRE 规则失败的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 10 上安装 SQL Server 2017 开发人员版时出现“糟糕”错误

[转]SQL SERVER2017|2019 安装程序无法与下载服务器联系。无法安装机器学习服务的问题解决方式

从开发人员的 POV 看 SQL Server 2008 和 SQL Server 2008 R2 之间的差异

SQL Server 2017 开发者版安装卡(挂机)无休止

sql server2017安装教程

SQL Server 2016,2014 无法找到数据库引擎启动句柄