java.lang.NoClassDefFoundError возникает при использовании tess4j без Eclipse

Я использую библиотеку tess4j для своего Java-приложения. Я следовал инструкциям и скопировал liblept168.dll и libtesseract302.dll в корневую папку моего проекта. Когда я запускаю свое приложение с Eclipse, оно работает нормально. Но когда я экспортирую его как исполняемый файл 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 и 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)

person Serhii Tereshchenko    schedule 05.08.2014    source источник
comment
У меня была такая же проблема, поэтому я скопировал dll в c:/windows/system32.   -  person SparkOn    schedule 06.08.2014
comment
Та же проблема =\. Самый смешной момент, что он работает с Eclipse. Также я уверен, что моя программа видит все файлы. Потому что раньше у меня выдавало ошибку, что не может найти файлы, я их добавил, а там новая ошибка...   -  person Serhii Tereshchenko    schedule 06.08.2014
comment
Можете ли вы опубликовать трассировку стека?   -  person SparkOn    schedule 06.08.2014
comment
Вы включили каталог tessdate и указанные пакеты вместе с вашим пакетом?   -  person SparkOn    schedule 07.08.2014


Ответы (1)


Eclipse имеет jar tess4j в своем пути к классам, но в вашей системе его нет. Чтобы распространять этот проект, jar tess4j должен быть в пути к классам в вашем манифесте jar. Вы также можете добавить путь к этой банке в переменную среды classpath в настройках вашей системы.

У кого-то была такая же проблема

person mcgyver5    schedule 05.08.2014
comment
Я отредактировал пост. Пожалуйста, проверьте это. Это не помогло. Может есть еще идеи? - person Serhii Tereshchenko; 06.08.2014