首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tess4J错误,在作为war NoClassDefFoundError分发后:无法初始化类net.sourceforge.tess4j.TessAPI

Tess4J错误,在作为war NoClassDefFoundError分发后:无法初始化类net.sourceforge.tess4j.TessAPI
EN

Stack Overflow用户
提问于 2016-01-26 11:32:47
回答 3查看 9.4K关注 0票数 1

我有Spring Webserver项目,它在我的PC上在Intellij下工作正常,但是它在分发到与war文件相同的PC - NoClassDefFoundError:未能初始化类NoClassDefFoundError之后就不能工作了。

我的代码:

代码语言:javascript
运行
复制
ITesseract instance = new Tesseract(); // JNA Interface Mapping

 instance.setDatapath(new File(datapath).getPath()); 
 instance.setLanguage("eng");      
 try {
          String result = instance.doOCR(imageFile); 
 } catch (TesseractException e) {
          System.err.println(e.getMessage());
 }

我只有一个maven依赖项,发布到Tess4J:

代码语言:javascript
运行
复制
<dependency>
        <groupId>net.sourceforge.tess4j</groupId>
        <artifactId>tess4j</artifactId>
        <version>3.0.0</version>
</dependency>

在运行分布式war之后,我得到了一个错误:

代码语言:javascript
运行
复制
There was an unexpected error (type=Internal Server Error, status=500).
Could not initialize class net.sourceforge.tess4j.TessAPI

完整Tomcat日志:

代码语言:javascript
运行
复制
java.lang.NoClassDefFoundError: Could not initialize class net.sourceforge.tess4j.TessAPI
        at net.sourceforge.tess4j.Tesseract.init(Tesseract.java:367) ~[tess4j-3.0.0.jar:3.0.0]
        at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:280) ~[tess4j-3.0.0.jar:3.0.0]
        at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:212) ~[tess4j-3.0.0.jar:3.0.0]
        at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:196) ~[tess4j-3.0.0.jar:3.0.0]
        at ocr.OCRController.handleFileUpload(OCRController.java:127) ~[classes/:0.3.0]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_51]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_51]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_51]
        at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_51]
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222) ~[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) ~[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) ~[spring-webmvc-4.2.3.RELEASE.jar:4.2.3.RELEASE]

我怎样才能纠正错误?我计划在Tomcat下的Windows中托管这个应用程序。谢谢你的帮助,朋友们!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-29 21:51:56

问题是在temp文件夹中-它没有包含所有必要的dll。

社区信息: 1.检查tomact下的temp文件夹-对于我,它的路径是:D:\Programs_Files\apache-tomcat-8.0.27\temp

这个临时文件夹必须包含目录tess4j\win32-x86-64,包含以下3个文件:gsdll64.dll、liblept171.dll、libtesseract304.dll (或您的版本)。

我遇到了问题,因为tess4j\win32-x86-64目录从未在临时目录中创建过。

我的应用程序在Intellij下工作正常,因为另一个临时文件夹(用于IDEA)工作正常- C:\Users\Iuliia\AppData\Local\Temp\

包含tess4j\win32 32-x86-64\gsdll64.dll,tess4j\win32 32-x86-64\liblept171.dll,tess4j\win32-x86-64\libtesseract304.dll。

注意,此文件是在代码中调用Tesseract的过程中创建的。不早。

如何在Tomcat下用temp解决这个问题

我已经将win32 32-x86-64\gsdll64.dll、win32 32-x86-64\liblept171.dll、win32 32-x86-64\libtesseract304.dll添加到我项目中的目录中。

看看我的项目结构:

在部署到tomcat之后,必需的dll位于类目录下(重要!)--这意味着它们在作用域中。

现在它将被添加到

D:\Programs_Files\apache-tomcat-8.0.27\temp\tess4j\win32-x86-64如预期的那样。

票数 0
EN

Stack Overflow用户

发布于 2018-09-05 11:05:47

NoClassDefFoundError的另一个修复方法是安装相应的Microsoft C++ Runtime (滚动到底部并展开Other Tools and Frameworks):

由于DLL是使用Visual 2015/2017构建的,请确保安装了Visual 2015可再发行版或VC++ 2017可再发行版。

有关详细信息,请参阅Tess4J开发教程。

票数 0
EN

Stack Overflow用户

发布于 2019-07-21 09:25:11

我升级到Windows 10,突然间tessarct就不再适用于我的应用程序了。

根据Tess4J文档,您需要有已安装VC++ 2017可再发行版。

在我将它安装在Windows 10上之后,它再次正常工作了。

如果您已经升级到Windows 10,并且遇到了上面的问题,而且它以前已经成功了,那么这可能是您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35012873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档