Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.2.0, 2.3.0, 2.3.1
-
None
-
Windows
Description
Windows fails to load the OpenNLP. This is reported in https://stackoverflow.com/questions/77615264/why-does-opennlp-cli-output-slf4j-failed-to-load-class-org-slf4j-impl-staticl
The reason for this behaviour is, that the BAT script doesn't add libs to the classpath (at all). Therefore, it will fail to load the logger impl (and all other classes as well).
To fix, we need to append the classpath similar to the linux scripts:
@ECHO off REM # Licensed to the Apache Software Foundation (ASF) under one REM # or more contributor license agreements. See the NOTICE file REM # distributed with this work for additional information REM # regarding copyright ownership. The ASF licenses this file REM # to you under the Apache License, Version 2.0 (the REM # "License"); you may not use this file except in compliance REM # with the License. You may obtain a copy of the License at REM # REM # http://www.apache.org/licenses/LICENSE-2.0 REM # REM # Unless required by applicable law or agreed to in writing, REM # software distributed under the License is distributed on an REM # # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY REM # KIND, either express or implied. See the License for the REM # specific language governing permissions and limitations REM # under the License. REM # Note: Do not output anything in this script file, any output REM # may be inadvertantly placed in any output files if REM # output redirection is used. SETLOCAL IF "%JAVA_CMD%" == "" ( IF "%JAVA_HOME%" == "" ( SET JAVA_CMD=java ) ELSE ( REM # Keep JAVA_HOME to short-name without spaces FOR %%A IN ("%JAVA_HOME%") DO SET JAVA_CMD=%%~sfA\bin\java ) ) REM remove HEAP variable SET HEAP= IF not "%JAVA_HEAP%" == "" ( SET HEAP="-Xmx%JAVA_HEAP%" ) REM # Should work with Windows XP and greater. If not, specify the path to where it is installed. IF "%OPENNLP_HOME%" == "" ( SET OPENNLP_HOME=%~sp0.. ) ELSE ( REM # Keep OPENNLP_HOME to short-name without spaces FOR %%A IN ("%OPENNLP_HOME%") DO SET OPENNLP_HOME=%%~sfA ) echo Environment echo JAVA_HOME=%JAVA_HOME% echo OPENNLP_HOME=%OPENNLP_HOME% REM Iterate over JAR files in the lib directory and build the classpath SET CLASSPATH="%OPENNLP_HOME%\lib\*" echo CLASSPATH=%CLASSPATH% %JAVA_CMD% %HEAP% "-Dlog4j.configurationFile=%OPENNLP_HOME%\conf\log4j2.xml" -cp %CLASSPATH% opennlp.tools.cmdline.CLI %* ENDLOCAL