glassfish中的Tess4j错误:java.lang.NoSuchFieldError:RESOURCE_PREFIX

时间:2015-07-05 23:39:07

标签: glassfish-3 tesseract tess4j

我在oracle-glassfish3.1.1中使用Tess4j 2.0.0,例外是:

  

java.lang.NoSuchFieldError:RESOURCE_PREFIX     at net.sourceforge.tess4j.util.LoadLibs。(LoadLibs.java:60)     在net.sourceforge.tess4j.TessAPI。(TessAPI.java:40)     at net.sourceforge.tess4j.Tesseract.init(Tesseract.java:360)     at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:273)     at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:256)     at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:237)     at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:221)     在cn.uxcard.util.CaptchaUtil.getCaptcha(CaptchaUtil.java:29)     在cn.uxcard.util.HttpConnection.getCaptcha(HttpConnection.java:60)     在cn.uxcard.util.HttpConnection.tryCaptcha(HttpConnection.java:78)     在cn.uxcard.util.HttpConnection.login(HttpConnection.java:90)     在cn.uxcard.util.HttpConnection.tryLogin(HttpConnection.java:121)     在cn.uxcard.util.HttpConnection.init(HttpConnection.java:148)     在cn.uxcard.util.HttpUtil.getConnection(HttpUtil.java:28)     at cn.uxcard.executor.FetchTodayConsumeRecordExecutor.run(FetchTodayConsumeRecordExecutor.java:29)     at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:895)     at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:918)     在java.lang.Thread.run(Thread.java:662)

glassfish加载com.sun.jna.Platform类,不要使用WEB-INF / lib / jna-4.1.0.jar但使用" bundle://185.0:1 / com /太阳/ JNA / Platform.class&#34 ;. 我可以更改glassfish类加载顺序,如果是这样的话?

3 个答案:

答案 0 :(得分:2)

我在尝试使用Tess4j开发Web应用程序时遇到了同样的问题,并且在一些研究发现GlassFish Server运行时中的类加载器遵循此链接中指定的委托层次结构>>

https://docs.oracle.com/cd/E19798-01/821-1752/6nmndgmhp/index.html

因此,将jar文件(tess4j.jar,jna.jar,jai_imageio.jar,commons-io-2.4.jar)放在系统扩展目录中( domain-dir / lib / ext )为我解决了这个错误。

使用的版本:

•GlassFish Server 3.1.2.2 •jdk-7u80-windows-i586.exe •NetBeans IDE 8.0

答案 1 :(得分:0)

我遇到了同样的问题,我将JRE版本切换到我的eclipse执行环境Java-SE-1.7(jre7)并解决了这个问题。

答案 2 :(得分:0)

最新版本3.4.9(针对Tesseract 3.05.01)和4.0.2(针对Tesseract 4.0.0-beta.1)已删除对JNA RESOURCE_PREFIX字符串常量的依赖性。该库现在可以与Glassfish一起使用。