Based on Apache OpenNLP documentation, I downloaded binary version of OpenNLP, then set JAVA_HOME and OPENNLP_HOME. When I run opennlp command it faced to below exception:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
I used windows operating system and tried this command on different systems with different versions of Java, but always this exception is shown. It is too odd, because I've searched and no one faced this issued before.
You found a bug. Congratulation! I created OPENNLP-1527 for it.
Meanwhile, you can override the content of the opennlp.bat file with
@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 Add lib directory to 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
This will correctly append the classes contained in the lib folder to the classpath and the cli will work as expected.