2016-04-22 33 views
-2

Ich verwende die Tess4j-API zur Ausführung von OCR und habe ein dynamisches Webprojekt in Eclipse erstellt. Wenn ich eine neue Java-Klasse direkt im Java-Ressourcenordner anlege, funktioniert der Code einwandfrei.
Java-Code funktioniert einwandfrei, wenn er als unabhängige statische Hauptklasse erstellt wird, aber nicht beim Aufruf von 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()); 
     } 
    } 

Jedoch bin ich eine Ausnahme bekommen, wenn ich den gleichen Code von meinem Servlets doPost Methode nenne.

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()); 
     } 
    } 

Ich habe alle erforderlichen Gläser unter lib Ordner WEB-INF enthalten. Habe auch die Jars im Build-Pfad des Projekts hinzugefügt. Könnte mir bitte jemand sagen, was ich falsch mache.
Ausnahme:
java.lang.IllegalStateException: Input nicht gesetzt
23: 33: 45.002 [http-bio-8080-exec-5] ERROR net.sourceforge.tess4j.Tesseract - Eingang
java.lang nicht gesetzt .IllegalStateException: Eingabe nicht festgelegt

+0

Bitte [formatieren Sie Ihren Beitrag] (http://stackoverflow.com/editing-help). Dies ist ein Chaos und wird nicht in seiner aktuellen Form gelesen werden. – tnw

+0

Sind Sie sicher, dass die Servlet-Version die angegebene Datei findet? Fügen Sie nach dem 'File image = ...' eine Ausgabe hinzu, um sicherzustellen, dass die Datei existiert und lesbar ist. – KevinO

+0

@KevinO .. Gerade eine System.out.println() nach der Datei Bild = .. Zeile hinzugefügt und es auf dem Bildschirm..so ich denke, die Datei ist lesbar –

Antwort

0

Ich denke, dass Ihr aktuelles Verzeichnis unterscheidet, wenn Sie von Servlet aufrufen. Das aktuelle Verzeichnis ist Tomcat Bin-Ordner. so, wenn Sie so nennen:

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

Ihre scan0008.jpg in Binärordner von tomcat gestellt werden muss oder müssen Sie absoluten Pfad der Datei verwenden.

+0

Ich habe auch versucht, den absoluten Pfad zu geben..aber es funktioniert nicht .. immer noch die Ausnahme. Die Datei scheint lesbar zu sein –

+0

überprüfen Sie bitte image.exists(), um zu sehen, ob es existiert –

+0

Hallo Mojtaba, es existiert nicht. Ich habe versucht, den absoluten Pfad..now Bild ist lesbar .. aber jetzt bekomme ich diese Ausnahme: