0

我将 tess4j 库用于我的 java 应用程序。我按照说明将 liblept168.dll 和 libtesseract302.dll 复制到我的项目根文件夹中。当我使用 Eclipse 运行我的应用程序时,它可以正常工作。但是当我将它导出为可运行的 jar 文件时,它给了我 java.lang.NoClassDefFoundError - UnsatisfiedLinkError: The specified module could not be found。但我敢肯定,那个程序会看到这个文件,因为在我添加这个文件之前它给了我其他错误,即找不到文件。我也曾经将此 dll 复制到我的 jar 存档中,但它没有帮助。我绝对确定,我也使用了正确的 jre。我只是无法理解有什么问题......

Tesseract1 api = new Tesseract1();
api.setTessVariable("tessedit_char_whitelist", "(),-+0123456789");
//part of code of getting image
String result = api.doOCR(image);

有任何想法吗?

UPD:我按照你说的编辑了我的清单文件,它是:

清单版本:1.0

Rsrc-Class-Path: ./ jsoup-1.7.3.jar json_simple-1.1.jar Filters.jar ja i_core.jar jna-4.1.0.jar tess4j.jar jai_codec.jar jxl.jar myjsocksj.j ar jai_imageio.jar

类路径:jai_imageio.jar tess4j.jar

Rsrc-Main-Class: com.slando.MainWindow

主类:org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

然后有关于丢失dll文件的错误,我将它们复制到jar中。然后同样的错误开始发生。

堆栈跟踪:

java.lang.NoClassDefFoundError: Could not initialize class net.sourceforge.tess4j.Tesseract1
    at com.slando.parser.ImageParser.getNumberFromImage(ImageParser.java:109)
    at com.slando.parser.ImageParser.loadNumberFromImage(ImageParser.java:138)
    at com.slando.parser.ImageParser.loadNumberFromImage(ImageParser.java:144)
    at com.slando.parser.PageParser.loadPhone(PageParser.java:202)
    at com.slando.parser.PageParser.loadFullInfo(PageParser.java:319)
    at com.slando.HttpThread.run(HttpThread.java:58)
    at java.lang.Thread.run(Unknown Source)

多一个:

java.lang.UnsatisfiedLinkError: The specified module could not be found.
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.Native.open(Native.java:1759)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
at com.sun.jna.Native.register(Native.java:1396)
at com.sun.jna.Native.register(Native.java:1156)
at net.sourceforge.tess4j.TessAPI1.<clinit>(Unknown Source)
at com.slando.parser.ImageParser.getNumberFromImage(ImageParser.java:109)
at com.slando.parser.ImageParser.loadNumberFromImage(ImageParser.java:138)
at com.slando.parser.ImageParser.loadNumberFromImage(ImageParser.java:144)
at com.slando.parser.PageParser.loadPhone(PageParser.java:202)
at com.slando.parser.PageParser.loadFullInfo(PageParser.java:319)
at com.slando.HttpThread.run(HttpThread.java:58)
at java.lang.Thread.run(Unknown Source)
4

1 回答 1

1

Eclipse 在其类路径中有 tess4j jar,但您的系统没有。要分发此项目,tess4j jar 需要位于 jar 清单的类路径中。您还可以将此 jar 的路径添加到系统设置中的类路径环境变量中。

其他人也有同样的问题

于 2014-08-05T15:07:50.027 回答