我将 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)