根据Apache OpenNLP文档,我下载了OpenNLP的二进制版本,然后设置JAVA_HOME和OPENNLP_HOME。当我运行 opennlp 命令时,它面临以下异常:
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.
我使用Windows操作系统,并在具有不同Java版本的不同系统上尝试了此命令,但总是显示此异常。这太奇怪了,因为我搜索过,之前没有人遇到过这个问题。
您发现了一个错误。恭喜!我为其创建了OPENNLP-1527。
同时,您可以使用
覆盖bat文件的内容@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
这会将 lib 文件夹中包含的类正确附加到类路径,并且 cli 将按预期工作。