2013-05-11 30 views
3

我尽量让事情tess4j(OCR算法)的作品,并使用此代码IM:在线程 “主要” java.lang.NoClassDefFoundError的Java exception-例外:网/ sourceforge上/ tess4焦耳/正方体

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 

在我的生成的类路径,我哈默尔正确的罐子文件:

tess4j.jar 
jai_imageio.jar 

之后我导出一个简单的jar文件(罐子是在构建路径“秩序和出口”)标志,并运行我的代码:

java -jar manager.jar 

请HEL p!

+0

你没有向我们展示关键部分:你如何运行代码。我强烈怀疑在运行它们时,jar文件不在类路径中。仅仅因为你对它们构建*并不意味着当你运行*代码时它们出现在类路径中。 – 2013-05-11 16:02:46

+0

刚刚编辑...请在我的问题底部阅读。谢谢! – gran33 2013-05-11 16:08:52

+0

是的 - 现在看到我的答案,我们知道你是如何运行它的。 – 2013-05-11 16:10:50

回答

0
要打包的文件错误的方式

,你的依赖是不是在罐子

+0

非常感谢,但正确的方式是什么? – gran33 2013-05-11 16:03:28

+1

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – acdcjunior 2013-05-11 16:20:40

+1

tov ahi ........ – Dima 2013-05-11 16:40:08

2

jar file manifest应包括Class-Path条目:

Class-Path: tess4j.jar jai_imageio.jar 

这些jar文件应该被放置在同一个目录作为你的jar文件在执行时,所以他们可以适当地加载。

那时候,一切都会好的。但是没有清单中的条目,就没有任何东西可以将您的jar文件与其依赖的其他jar文件相关联。

0

你的班级在哪里?你错过了写课程。在类内部会有public static void main(String args [])并编译 Tesseract instance = Tesseract.getInstance();

您需要在构建路径中使用tess4j.jar。

0

如果你的操作系统是Windows,libtesseract304.dll(用于OCR)是用VC2013构建的,所以你需要其他系统dll。下载here

相关问题