为什么 OpenNLP CLI 在 Windows 上输出“SLF4J: 无法加载类“org.slf4j.impl.StaticLoggerBinder”?

问题描述 投票:0回答:1

根据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版本的不同系统上尝试了此命令,但总是显示此异常。这太奇怪了,因为我搜索过,之前没有人遇到过这个问题。

java nlp slf4j opennlp
1个回答
0
投票

您发现了一个错误。恭喜!我为其创建了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 将按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.