java.lang.NoClassDefFoundError在没有Eclipse的情况下使用tess4j发生

时间:2014-08-05 14:59:32

标签: java eclipse tess4j

我在我的java应用程序中使用tess4j库。我按照说明将liblept168.dll和libtesseract302.dll复制到我的项目根文件夹中。当我用Eclipse运行我的应用程序时,它正常工作。但是当我将它导出为runnable jar文件时,它会给我java.lang.NoClassDefFoundError - UnsatisfiedLinkError:找不到指定的模块。但我确信,该​​程序会看到这些文件,因为在我添加此文件之前,它给了我其他错误,无法找到文件。我也习惯将这个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

     

Class-Path:jai_imageio.jar tess4j.jar

     

Rsrc-Main-Class:com.slando.MainWindow

     

Main-Class: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)

1 个答案:

答案 0 :(得分:1)

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

Someone else had the same problem

相关问题