Java代码在作为独立的静态主类创建时运行良好,但在从servlet调用时运行不正常

Java代码在作为独立的静态主类创建时运行良好,但在从servlet调用时运行不正常,java,jsp,servlets,tesseract,tess4j,Java,Jsp,Servlets,Tesseract,Tess4j,我正在使用TESS4JAPI执行OCR,并在eclipse中创建了一个动态web项目。如果我直接在java resources文件夹下创建一个新的java类,代码工作正常。 public static void main(String[] args){ File image = new File("Scan0008.jpg"); ITesseract instance = new Tesseract(); try{

我正在使用TESS4JAPI执行OCR,并在eclipse中创建了一个动态web项目。如果我直接在java resources文件夹下创建一个新的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());
        }
    }
我已经在WEB-INF的lib文件夹下包含了所有必需的JAR。我还在项目构建路径中添加了JAR。谁能告诉我我做错了什么。
例外情况:
java.lang.IllegalStateException:未设置输入
23:33:45.002[http-bio-8080-exec-5]错误net.sourceforge.tess4j.Tesseract-未设置输入

java.lang.IllegalStateException:Input not set

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

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

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

请。这是一个混乱的文件,无法以其当前形式读取。您确定servlet版本正在查找指定的文件吗?尝试在
文件映像=…
之后添加输出,以确保文件存在且可读。@KevinO。。刚刚在文件image=…之后添加了一个System.out.println()。。行,并在屏幕上输出..因此我认为该文件是可读的,请打印image.exists()。如果该文件不存在,则不会引发异常,但exists()方法将返回false。@SaurabhGour,
新文件(某些文件)
如果文件不在预期位置,则不会引发异常。只是打印一些东西没有帮助。您应该显式检查
是否(!image.exists()){display error}
。我也尝试过给出绝对路径..但无效..仍然得到异常。文件似乎是可读的。请检查image.exists()以查看它是否存在。它不存在。我已经尝试给出了绝对路径。现在图像是可读的。。但现在我得到了一个例外:是的,这必须工作,您可能键入错误。请检查您的绝对地址Hi Mojtaba..从这里解决了另一个异常。。感谢您抽出时间:)