运行Solr需要Java 1.7或更高版本,但1.8已安装

时间:2017-09-08 23:33:31

标签: java solr

我无法在Windows上启动Solr 4.10.4,因为它说明了:

  

运行Solr

需要Java 1.7或更高版本

以下是它变得有趣的地方,我已经安装了Java JRE 1.8_102,如果我在命令提示符下键入java -version,它会正确显示Java版本。如果我尝试使用Solr.cmd -f在下一行启动,它会给我错误。

对于另一个测试级别,我在Solr 5.1.0中进行了测试,它通过Solr.cmd -f启动没有问题

由于它在5.1.0中运行且Java版本是正确的,为什么它不适用于4.10.4?

我可以正确设置JAVA_HOME环境变量/路径和注册表项,或者Solr 5.1.0无法启动。 (我指向HOME的jre目录和Path的jre \ bin。)

5 个答案:

答案 0 :(得分:2)

我在6.6.2中遇到了类似的问题,问题结果是solr.cmd脚本中的一个小错误。

在resolve_java_info子例程中,它正在进行字符串比较而不是版本上的数字比较。所以编辑这段代码:

<div class="title-wrapper">
  <a>
    <div class="title">A WITCH SCORNED</div>
  </a>
</div>
<div class="title-wrapper corrected">
  <a>
    <div class="title">A WITCH SCORNED</div>
  </a>
</div>

并改变

REM Extract the major Java version, e.g. 7, 8, 9, 10 ...
for /f "tokens=1,2 delims=." %%a in ("!JAVA_VERSION_INFO!") do (
  if "%%a" GEQ "9" (
    set JAVA_MAJOR_VERSION=%%a
  ) else (
    set JAVA_MAJOR_VERSION=%%b
  )
)

为:

  if "%%a" GEQ "9" (

删除引号修复了问题。

答案 1 :(得分:1)

查看bin\solr.cmd脚本。

这就是Solr确定要使用哪个JVM的地方。它也是错误消息的来源。 (https://github.com/apache/lucene-solr/blob/branch_4x/solr/bin/solr.cmd

相关部分是这个(或类似的):

REM Verify Java is available
if NOT DEFINED JAVA_HOME goto need_java_home
"%JAVA_HOME%"\bin\java -version:1.8 -version > nul 2>&1
IF ERRORLEVEL 1 "%JAVA_HOME%"\bin\java -version:1.7 -version > nul 2>&1
IF ERRORLEVEL 1 goto need_java_vers
set "JAVA=%JAVA_HOME%\bin\java"

我认为问题在于您的%JAVA_HOME% 未正确设置。

  

由于它在5.1.0中运行且Java版本是正确的,为什么它不适用于4.10.4?

在Solr 5.x中重写了solr.cmd脚本。比较已安装的两个版本。

答案 2 :(得分:0)

它最终不是变量,而是我试图开始使用Solr.cmd,我需要通过浏览示例启动Solr:java -jar start.jar。我不确定为什么Solr.cmd不起作用,但可以解决它。

答案 3 :(得分:0)

就我而言,我已经安装了Java 10.0.2,但出现了错误 错误:运行Solr需要Java 1.7或更高版本,但已安装1.8

我已经检查了代码,并打印了变量 JAVA_MAJOR_VERSION ,该变量始终设置为0,然后更改了行

REM Extract the major Java version, e.g. 7, 8, 9, 10 ...
  for /f "tokens=2 delims=." %%a in ("!JAVA_VERSION_INFO!") do (
     set JAVA_MAJOR_VERSION=%%a
  )

REM Extract the major Java version, e.g. 7, 8, 9, 10 ...
  for /f "tokens=1 delims=." %%a in ("!JAVA_VERSION_INFO!") do (
     set JAVA_MAJOR_VERSION=%%a
  )

注意:令牌已更改

对于我来说,它奏效了。万一它对您没有帮助,可以稍微调试一下solr.cmd。 :)

答案 4 :(得分:0)