Java代码在作为独立的静态主类创建时工作正常,但在从servlet

时间:2016-04-22 18:06:32

标签: java jsp servlets tesseract tess4j

我使用Tess4j API执行OCR并在eclipse中创建了一个动态Web项目。如果我直接在Java资源文件夹下创建一个新的java类,代码工作正常。

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

但是当我从Servlets 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());
        }
    }

我已将所有必需的jar包含在WEB-INF的lib文件夹下。还在项目构建路径中添加了jar。谁能让我知道我做错了什么 例外:
java.lang.IllegalStateException:输入未设置
23:33:45.002 [http-bio-8080-exec-5] ERROR net.sourceforge.tess4j.Tesseract - 输入未设置
java.lang.IllegalStateException:未设置输入

1 个答案:

答案 0 :(得分:0)

我认为当你从servlet调用时,你当前的目录是不同的。当前目录是你tomcat bin文件夹。所以当你这样打电话时:

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

你的scan0008.jpg必须放在tomcat的bin文件夹中,或者你必须使用文件的绝对路径。