1

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

java.lang.NoSuchFieldError: RESOURCE_PREFIX at net.sourceforge.tess4j.util.LoadLibs.(LoadLibs.java:60) at net.sourceforge.tess4j.TessAPI.(TessAPI.java:40) at net.sourceforge.tess4j.Tesseract。 init(Tesseract.java:360) 在 net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:273) 在 net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:256) 在 net.sourceforge.tess4j.Tesseract .doOCR(Tesseract.java:237) 在 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) 在 cn.uxcard.executor.FetchTodayConsumeRecordExecutor.run(FetchTodayConsumeRecordExecutor.java:29) 在 java.util .concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 在 java.lang.Thread.run(Thread.java:662)运行(线程.java:662)运行(线程.java:662)

glassfish 加载 com.sun.jna.Platform 类,不要使用 WEB-INF/lib/jna-4.1.0.jar 而是使用“bundle://185.0:1/com/sun/jna/Platform.class” . 我可以更改 glassfish 类加载顺序吗?如果可以,如何更改?

4

3 回答 3

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

于 2015-10-09T08:57:14.320 回答
0

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

于 2017-05-04T15:28:40.363 回答
0

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

于 2018-05-04T01:26:18.867 回答