Java 创建为独立静态主程序时代码工作正常 class,但从 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 class,代码工作正常。
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。还在项目构建路径中添加了 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 文件夹中,或者您必须使用文件的绝对路径。
我正在使用 Tess4j API 执行 OCR,并在 Eclipse 中创建了一个动态 Web 项目。如果我直接在 Java 资源文件夹下创建一个新的 java class,代码工作正常。
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。还在项目构建路径中添加了 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 文件夹中,或者您必须使用文件的绝对路径。