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

Oracle JRE rule failure while installing SQL Server 2017 Developer edition

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

我遇到以下错误:

This computer does not have the Oracle Java SE Runtime Environment Version 7 Update 51 (64-bit) or higher installed. The Oracle Java SE Runtime Environment is software provided by a third party. Microsoft grants you no rights for such third-party software. You are responsible for and must separately locate, read and accept applicable third-party license terms. To continue, download the Oracle SE Java Runtime Environment from 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 Server0\Tools\Binn\
        C:\Program Files\dotnet\
        C:\Program Files\Git\cmd
        C:\Program Files\nodejs\
        C:\Program FilesE\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 屏幕上取消选择它,但我不想那样做。我想解决这个问题,为什么当我的机器配置满足所有先决条件时它仍然中断安装?

简介:

我遇到了完全相同的问题,我花了很长时间才修复它。我从最新版本的 Java(可在此处获取:http://www.oracle.com/technetwork/java/javase/downloads/index.html) and installed JRE, JRE Server, and JDK; first separately and then altogether following the instructions here: 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
  2. 上安装的所有三个 Java 9
  3. 删除了环境变量中的所有 Java 路径(位于“系统属性”的“高级”选项卡中);打开开始菜单后搜索env很容易找到,在搜索结果中选择"Edit the System Environment Variable"
    • 在系统 Properties/Advanced 中,select "System Variables" 中的 "Path" 变量并删除该变量中的所有 Java 路径。
  4. 重新启动我的电脑并从以下路径下载 JRE 7 (jre-7u80-windows-x64.exe):http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
  5. 运行 exe 文件并完成安装后,返回系统属性并将新的 Java 位置添加到路径中。您应该添加 bin 文件夹的位置;在我的电脑中,它是:C:\program files\java\jre7\bin
  6. 我还启用了 Java 访问桥。 Java 安装指南:"By default, the Java Access Bridge is disabled. To enable it, run the following command (where %JRE_HOME% is the directory of your JRE): %JRE_HOME%\bin\jabswitch -enable"
  7. 再次重启我的系统
  8. 轻松安装 PolyBase。

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

Warning: This is a registry fix so try it at your own risk !

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

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

我在 2017 年 12 月上旬发表的一篇文章中充分解释了根本原因并提供了注册表编辑解决方法。问题与文章 [=15] 中提到的 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。您必须导出在 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JRE 找到的 JRE 9 版本密钥并编辑它们以制作键名与 JRE 7 匹配。有三个键可以重命名。导入编辑的密钥。这样安装程序将找到指向 JRE 9 位置的版本 7 密钥名称。

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

You want to replace all occurrences of JRE with Java Runtime Environment. You must not alter the lowercase jre references.

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

我今天刚遇到这个问题,过去 5 个小时我一直在寻找解决方案,但我确实在这里找到了它,但有点 "bad way to give the solution"

基本上解决方案是转到注册表编辑器(打开 运行 并键入 regedit)并转到第三个选择,即 "HKEY_LOCAL_MACHINE" 和 >SOFTWARE>JAVASOFT> JRE 你会发现名为 JRE 的文件只需将名称更改为 "Java Runtime Environment" !! 基本上就是这样,因为 SQL 服务器安装问题是它没有找到名称为 "Java Runtime Environment" 相反,它找到了 JRE,它只是一个快捷方式,而该快捷方式随上次更新 5 及更高版本一起提供,这就是为什么在下载和安装 JRE 5 或更高版本时出现错误的原因!

我尝试安装 SQL Server 2017,其中包含 PolyBase。除了安装 JRE 8.144

外,没有任何解决方案对我有用

JRE 8.144 Download

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 密钥被命名为“Java Runtime Environment”,而不是 JDK。

真正的钥匙JDK被单独留下。名为 Java Runtime Environment 的第二个密钥用于让 SQL 服务器执行安装。第二个新键与每个子键的 JDK 键具有完全相同的项目值 - 只有 JDK 键的名称发生了变化。