2016-04-22 22 views
-2

我使用Tess4j API執行OCR並在eclipse中創建了動態Web項目。如果我直接在Java資源文件夾下創建一個新的Java類,代碼工作正常。
Java代碼在創建時作爲獨立的靜態主類正常工作,但從servlet調用時沒有工作

public static void main(String[] args){ 
     File image = new File("Scan0008.jpg"); 
     ITesseract instance = new Tesseract(); 
     try{ 
      String result = instance.doOCR(image); 
      System.out.println(result); 
     }catch(TesseractException e){ 
      System.err.println(e.getMessage()); 
     } 
    } 

但是我得到的時候,我呼籲從我的Servlet的doPost方法相同代碼的異常。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
      Validate valObj = new Validate(); 
      valObj.validate(); 
    } 
    public void validate() { 
     File image = new File("Scan0008.jpg"); 
     ITesseract instance = new Tesseract(); 
     try { 
      String result = instance.doOCR(image); 
      System.out.println(result); 
     } catch (TesseractException e) { 
      System.err.println(e.getMessage()); 
     } 
    } 

我已經在WEB-INF的lib文件夾下包含了所有需要的jar文件。還在項目構建路徑中添加了罐子。任何人都可以讓我知道我做錯了什麼。
例外:
java.lang.IllegalStateException:輸入未設置
23:33:45.002 [HTTP-BIO-8080-EXEC-5] ERROR net.sourceforge.tess4j.Tesseract - 輸入沒有設置
java.lang中.IllegalStateException:輸入未設置

+0

請[格式化您的文章](http://stackoverflow.com/editing-help)。這是一團糟,不會以目前的形式閱讀。 – tnw

+0

你確定servlet版本正在找到指定的文件嗎?嘗試在'File image = ...'之後添加輸出以確保文件存在並且可讀。 – KevinO

+0

@KevinO ..在File image = ..行後面添加了一個System.out.println(),它在屏幕上輸出。所以我認爲該文件是可讀的 –

回答

0

我認爲當您從servlet調用時,您的當前目錄不同。當前目錄是你的tomcat bin文件夾。所以當你這樣打電話時:

File image = new File("Scan0008.jpg"); 

你的scan0008.jpg必須放在tomcat的bin文件夾中,或者你必須使用文件的絕對路徑。

+0

我也嘗試給絕對路徑..但​​它不工作..still獲得例外。文件似乎是可讀的 –

+0

請檢查image.exists(),看看它是否存在 –

+0

嗨Mojtaba,它不存在。我試圖給絕對路徑..現在圖像是可讀的..但現在我得到這個異常:

相關問題