3

私はtess4j(OCRアルゴリズム)で物事を機能させようとしていますが、このコードを使用しています:

import java.awt.image.RenderedImage;
import java.io.File;
import java.net.URL;

import javax.imageio.ImageIO;
import net.sourceforge.tess4j.*;

public static void main(String[] args) throws Exception{

    URL imageURL = new URL("http://s4.postimg.org/e75hcme9p/IMG_20130507_190237.jpg");

    RenderedImage img = ImageIO.read(imageURL);
    File outputfile = new File("saved.png");
    ImageIO.write(img, "png", outputfile);

    try {
    Tesseract instance = Tesseract.getInstance(); // JNA Interface Mapping

    //   Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping

        String result = instance.doOCR(outputfile);
        System.out.println(result);

    } catch (Exception e) {
        System.err.println(e.getMessage());
    }

}

Eclipse (juno-64bit) で実行すると、完璧に動作します!

しかし、コマンドラインから私はこの例外を取得します:

Exception in thread "main" java.lang.NoClassDefFoundError: net/sourceforge/tess4j/Tesseract
    at SimpleQueueServiceSample.testOCR(SimpleQueueServiceSample.java:73)
    at SimpleQueueServiceSample.main(SimpleQueueServiceSample.java:57)Caused by: java.lang.ClassNotFoundException: net.sourceforge.tess4j.Tesseract
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 2 more

私のビルド クラス パスには、正しい jar ファイルがあります。

tess4j.jar
jai_imageio.jar

その後、単純なjarファイルをエクスポートし(jarはビルドパスの「注文とエクスポート」で署名されています)、コードを実行します:

java -jar manager.jar

助けてください!

4

4 に答える 4

2

jarファイルのマニフェストにはClass-Pathエントリが含まれている必要があります。

Class-Path: tess4j.jar jai_imageio.jar

これらのjarファイルは、実行時にjarファイルと同じディレクトリに配置して、適切にロードできるようにする必要があります。

その時点で、すべてがうまくいくはずです。しかし、マニフェストにそのエントリがなければ、jar ファイルを依存する他の jar ファイルと接続するものは何もありません。

于 2013-05-11T16:09:45.813 に答える
0

ファイルを間違った方法でパッケージ化しています。依存関係が jar にありません

于 2013-05-11T16:02:36.260 に答える
0

OS が Windows の場合、libtesseract304.dll(OCR に使用される) は VC2013 でビルドされているため、別のシステムが必要ですdllここからダウンロードしてください。

于 2016-05-04T03:06:31.830 に答える