Sikuli: Java 未找到错误

Sikuli: Java not found error

安装 Sikuli 时,出现以下错误:

C:\Users\adb\Downloads>C:\Users\adb\Downloads\runSetup.cmd
'Files' is not recognized as an internal or external command,
operable program or batch file.
+++ Java not found in standard places C:\Program Files or C:\Program Files (x86)
+++ JAVA_HOME not specified
+++ ended with some errors

当我 运行 runSetup.cmd 文件时会发生这种情况。

我已经安装了 32 位和 64 位版本的 java,其他应用程序似乎都无法找到它(例如 Minecraft 和所有 Firefox 应用程序)。

但是,这里是我的 Java 安装位置:

C:\Program Files\Java\jre1.8.0_25
C:\Program Files (x86)\Java\jre1.8.0_25

您需要将JAVA_HOME添加为系统变量,并在路径中引用它。

  • 在 windows 中,转到 computer > Computer properties > advanced system properties > Advanced > Environment variables
  • 单击 'System Variables' 下的 New
  • 给变量 name 作为 JAVA_HOMEvalue 作为 path/to/java.
  • (对于 path/to/java 使用 Javascript 运行时环境文件夹的路径,例如 C:\Program Files\Java\jre1.8.0_25\ 而不是 C:\Program Files\Java\jre1.8.0_25\bin

  • 编辑变量PATH,在末尾添加%JAVA_HOME%/bin。关闭并再次启动您的 cmd。

  • 请注意,在某些系统上,路径中可能存在最大允许字符数,因此如果您超过了最大数量,您可能必须从路径中删除一些条目。请谨慎执行此操作,并先进行备份(通常 MS SQL 服务器条目可以安全删除)

为了更好的兼容性,可以尝试下载Java7 32bit版本,并将Java7的安装路径设置为JavaHome环境变量。 (如果设置自动检测失败)。

这个问题是因为Oracle发布了新版本Java。 Sikuli 安装正在寻找 2 个预览版本。 (我当前的路径是:C:\Program Files (x86)\Java\jre1.8.0_40)我在新电脑上安装 Sikuli 时遇到了同样的问题。

我所做的是修改了安装文件,这样我就可以用它在我公司的每台新电脑上安装Sikuli。并让 sikuli 识别最新的 Java 版本。

修改 "runSetup.cmd" 后,您还需要为 IDE 调整 "runIDE.cmd" 以识别最新的 Java 版本。

这是调整后的code/file:

runSetup.cmd

@echo off
SETLOCAL

set SIKULIX_HOME=%~dp0
set PARMS=-Xms64M -Xmx512M -Dfile.encoding=UTF-8

if not defined JAVA_HOME goto CHECKJAVA
IF EXIST "%JAVA_HOME%\bin\java.exe" goto JAVA_OK
echo +++ JAVA_HOME specified but not useable %JAVA_HOME%
echo +++ looking for Java in standard places

:CHECKJAVA
set PROGRAMS=%ProgramFiles%
if defined ProgramFiles(x86) set PROGRAMS32=%ProgramFiles(x86)%

IF not EXIST "%PROGRAMS%\Java\jre1.8.0_40" goto JAVA7
set JAVA_HOME=%PROGRAMS%\Java\jre1.8.0_40
goto JAVA_OK

:JAVA7
IF not EXIST "%PROGRAMS%\Java\jre7" goto JAVA6
set JAVA_HOME=%PROGRAMS%\Java\jre7
goto JAVA_OK

:JAVA6
IF not EXIST "%PROGRAMS%\Java\jre6" goto JAVANO
set JAVA_HOME=%PROGRAMS%\Java\jre6
goto JAVA_OK

:JAVANO
if not defined %PROGRAMS32% goto JAVANO32

IF not EXIST "%PROGRAMS32%\Java\jre1.8.0_40" goto JAVA7
set JAVA_HOME=%PROGRAMS32%\Java\jre1.8.0_40
goto JAVA_OK

:JAVA7
IF not EXIST "%PROGRAMS32%\Java\jre7" goto JAVA6
set JAVA_HOME=%PROGRAMS32%\Java\jre7
goto JAVA_OK

:JAVA6
IF not EXIST "%PROGRAMS32%\Java\jre6" goto JAVANO32
set JAVA_HOME=%PROGRAMS32%\Java\jre6
goto JAVA_OK

:JAVANO32
echo +++ Java not found in standard places %PROGRAMS% or %PROGRAMS32%
echo +++ JAVA_HOME not specified
goto STOPIT

:JAVA_OK 
echo +++ running this Java
"%JAVA_HOME%\bin\java.exe" -version
PATH=%SIKULIX_HOME%libs;%PATH%
echo +++ trying to start Sikuli Setup in %SIKULIX_HOME%
"%JAVA_HOME%\bin\java.exe" %PARMS% -jar "%SIKULIX_HOME%sikuli-setup.jar" %*

GOTO FINALLY
:STOPIT
echo.+++ ended with some errors
:FINALLY
ENDLOCAL

runIDE.cmd

@echo off
SETLOCAL

set SIKULIX_HOME=%~dp0
set PARMS=-Xms64M -Xmx512M -Dfile.encoding=UTF-8 -Dsikuli.FromCommandLine

if not defined JAVA_HOME goto CHECKJAVA
IF EXIST "%JAVA_HOME%\bin\java.exe" goto JAVA_OK
echo +++ JAVA_HOME specified but not useable %JAVA_HOME%
echo +++ looking for Java in standard places

:CHECKJAVA
set PROGRAMS=%ProgramFiles%
if defined ProgramFiles(x86) set PROGRAMS32=%ProgramFiles(x86)%

IF not EXIST "%PROGRAMS%\Java\jre1.8.0_40" goto JAVA7
set JAVA_HOME=%PROGRAMS%\Java\jre1.8.0_40
goto JAVA_OK

:JAVA7
IF not EXIST "%PROGRAMS%\Java\jre7" goto JAVA6
set JAVA_HOME=%PROGRAMS%\Java\jre7
goto JAVA_OK

:JAVA6
IF not EXIST "%PROGRAMS%\Java\jre6" goto JAVANO
set JAVA_HOME=%PROGRAMS%\Java\jre6
goto JAVA_OK

:JAVANO
if not defined %PROGRAMS32% goto JAVANO32

IF not EXIST "%PROGRAMS32%\Java\jre1.8.0_40" goto JAVA7
set JAVA_HOME=%PROGRAMS32%\Java\jre1.8.0_40
goto JAVA_OK

:JAVA7
IF not EXIST "%PROGRAMS32%\Java\jre7" goto JAVA6
set JAVA_HOME=%PROGRAMS32%\Java\jre7
goto JAVA_OK

:JAVA6
IF not EXIST "%PROGRAMS32%\Java\jre6" goto JAVANO32
set JAVA_HOME=%PROGRAMS32%\Java\jre6
goto JAVA_OK

:JAVANO32
echo +++ Java not found in standard places %PROGRAMS% or %PROGRAMS32%
echo +++ JAVA_HOME not specified
goto STOPIT

:JAVA_OK 
echo +++ running this Java
set SIKULI_COMMAND=%*
"%JAVA_HOME%\bin\java.exe" -version
PATH=%SIKULIX_HOME%libs;%PATH%
echo +++ trying to start Sikuli IDE 
echo +++ using: %PARMS% -jar %SIKULIX_HOME%sikuli-ide.jar %SIKULI_COMMAND%
"%JAVA_HOME%\bin\java.exe" %PARMS% -jar "%SIKULIX_HOME%sikuli-ide.jar" %SIKULI_COMMAND%

GOTO FINALLY
:STOPIT
echo.+++ ended with some errors
:FINALLY
ENDLOCAL

例如,如果您在文件 "runSetup.cmd" 上 'right-click' 并选择 'Edit',您将看到代码。如果您将 'original' 代码替换为我调整后的代码,它将能够使用最新的 Java 版本进行安装。