Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 作为war NoClassDefFoundError分发后出现Tess4J错误:无法初始化类net.sourceforge.Tess4J.TessAPI_Java_Maven_Jna_Tess4j - Fatal编程技术网

Java 作为war NoClassDefFoundError分发后出现Tess4J错误:无法初始化类net.sourceforge.Tess4J.TessAPI

Java 作为war NoClassDefFoundError分发后出现Tess4J错误:无法初始化类net.sourceforge.Tess4J.TessAPI,java,maven,jna,tess4j,Java,Maven,Jna,Tess4j,我有一个Spring boot Webserver项目,它在Intellij IDEA下可以在我的PC上正常工作,但在作为war文件分发到同一台PC上之后就不能工作了-NoClassDefFoundError:无法初始化类net.sourceforge.tess4j.TessAPI 我的代码: ITesseract instance = new Tesseract(); // JNA Interface Mapping instance.setDatapath(new File(datapa

我有一个Spring boot Webserver项目,它在Intellij IDEA下可以在我的PC上正常工作,但在作为war文件分发到同一台PC上之后就不能工作了-NoClassDefFoundError:无法初始化类net.sourceforge.tess4j.TessAPI

我的代码:

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相关:

<dependency>
        <groupId>net.sourceforge.tess4j</groupId>
        <artifactId>tess4j</artifactId>
        <version>3.0.0</version>
</dependency>
完整Tomcat日志:

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 Azure中托管此应用程序。谢谢你的帮助,朋友们

问题出在临时文件夹中-它不包含所有必需的DLL

社区信息: 1.检查tomact下的临时文件夹-对我来说,它的路径是:
D:\Programs\u Files\apache-tomcat-8.0.27\temp

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

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

但是

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

按预期包含tess4j\win32-x86-64\gsdll64.dll、tess4j\win32-x86-64\liblept171.dll、tess4j\win32-x86-64\libtesseract304.dll

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

如何解决Tomcat下的temp问题

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

看看我的项目结构:

在部署到tomcat之后,必要的DLL位于classes目录下(很重要!)——这意味着它们在范围内

现在它将被添加到


D:\Programs\u Files\apache-tomcat-8.0.27\temp\tess4j\win32-x86-64与预期一致。

问题出在temp文件夹中-它不包含所有必要的DLL

社区信息: 1.检查tomact下的临时文件夹-对我来说,它的路径是:
D:\Programs\u Files\apache-tomcat-8.0.27\temp

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

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

但是

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

按预期包含tess4j\win32-x86-64\gsdll64.dll、tess4j\win32-x86-64\liblept171.dll、tess4j\win32-x86-64\libtesseract304.dll

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

如何解决Tomcat下的temp问题

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

看看我的项目结构:

在部署到tomcat之后,必要的DLL位于classes目录下(很重要!)——这意味着它们在范围内

现在它将被添加到


D:\Programs\u Files\apache-tomcat-8.0.27\temp\tess4j\win32-x86-64如预期。

NoClassDefFoundError的另一个修复方法是安装相应的(滚动到底部并展开
其他工具和框架
):

由于使用VisualStudio 2015/2017构建DLL,请确保您安装了VisualC++ 2015可重分发或VC++ 2017可重新分配的安装。
有关更多详细信息,请参阅开发教程。

NoClassDefFoundError的另一个修复方法是安装相应的(滚动到底部并展开
其他工具和框架
):

由于使用VisualStudio 2015/2017构建DLL,请确保您安装了VisualC++ 2015可重分发或VC++ 2017可重新分配的安装。
有关更多详细信息,请参阅开发教程。

我升级到Windows 10,突然Tessart不再适用于我的应用程序

根据文件,您需要

在我把它安装到Windows10上之后,一切又恢复了正常


如果您已经升级到Windows 10,并且您遇到了上述问题,并且以前它工作过,那么这很可能是您的问题。

我升级到Windows 10,突然Tessart不再适用于我的应用程序

根据文件,您需要

在我把它安装到Windows10上之后,一切又恢复了正常

如果您已经升级到Windows 10,并且您遇到了上述问题,并且它以前工作过,那么这很可能是您的问题

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]