繁体   English   中英

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

[英]Java code working fine when created as an independent static main class, but not when called from servlet

我正在使用 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());
        }
    }

我已经在 WEB-INF 的 lib 文件夹下包含了所有需要的 jars。 还在项目构建路径中添加了 jars。 任何人都可以让我知道我做错了什么。
例外 :
java.lang.IllegalStateException:输入未设置
23:33:45.002 [http-bio-8080-exec-5] 错误 net.sourceforge.tess4j.Tesseract - 输入未设置
java.lang.IllegalStateException:输入未设置

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM