2013-05-11 80 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

相關問題