tess4j OCRtest JBoss ERROR java.lang.NoSuchMethodError

时间:2017-03-07 08:46:51

标签: java jboss ocr slf4j tess4j

我不能将tess4j OCR库与我的JBoss 7.1.1一起使用。我没有Maven配置,也不知道异常。我认为是slf4j日志库的冲突问题。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");

    String filein = getServletContext().getRealPath("/test/img/pic.png");
    File imageFile = new File(filein);
    ITesseract instance = new Tesseract();

    try{
        String result = instance.doOCR(imageFile);
        System.out.println(result);
    }catch (TesseractException e){
        System.err.println(e.getMessage());
    }

}

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].(...)facade.reports.OCRtest]] (http--0.0.0.0-8080-1) Servlet.service() para servlet (...)facade.reports.OCRtest lanzó excepción: java.lang.NoSuchMethodError: org.slf4j.bridge.SLF4JBridgeHandler.removeHandlersForRootLogger()V
at net.sourceforge.tess4j.util.LoggerConfig.loadConfig(Unknown Source) [tess4j-3.3.0.jar:]
at net.sourceforge.tess4j.util.LoggHelper.toString(Unknown Source) [tess4j-3.3.0.jar:]
at net.sourceforge.tess4j.Tesseract.<clinit>(Unknown Source) [tess4j-3.3.0.jar:]
at (...)facade.reports.OCRtest.doGet(OCRtest.java:36) [classes:]

1 个答案:

答案 0 :(得分:0)

在使用tess4j实施OCR时,我遇到了同样的问题。我通过使用slf4j遗留实现并重新配置我的maven项目中使用的log4j属性来解决我的问题做了大量研究。

有一天,我在他们的官方页面上读到了关于删除引起问题的行,即removeHandlersForRootLogger();,然后我从loadderConfig.java util文件和中删除了这一行尤里卡!它开始工作了。

请按照以下步骤操作:

  1. offical site

  2. 下载整个项目
  3. 找到tess4j\util文件夹的路径。我是这样的:D:\Tess4J\src\net\sourceforge\tess4j\util。然后打开loaderConfig.java文件,删除/评论removeHandlersForRootLogger();行。

  4. 稍后使用Ant命令再次构建整个项目。由于它是一个Apache Ant项目,请查看build.xml并探索构建ant项目,学习新东西很有趣。

  5. 如果您没有幸运地构建项目,只需在包含build.xml的主文件夹中打开cmd提示并键入ant并按Enter键,它将开始使用以下配置构建build.xml Feed。

    1. Voilà,您在dist文件夹中创建了自己的JAR。

    2. 现在将此JAR包含在您的项目存储库中。