2016-08-21 5 views
3

JSF 웹 응용 프로그램에서 Tesseract를 사용하고 있습니다. 나는 아파치 톰캣 7 서버를 사용하여 내 웹 프로젝트에 통합하면 나는 간단한 자바 프로젝트와 정팔 포체의 API에 익숙해지고 있다고Apache 서버의 Tesseract : 프로세스가 다른 프로세스에서 사용 중이기 때문에 프로세스가 파일에 액세스 할 수 없습니다.

는 그 다음 문제없이 일했다, 나는 다음과 같은 예외가 얻을 :

20:27:56.291 [http-apr-8090-exec-14] WARN net.sourceforge.tess4j.util.LoadLibs - C:\apache-tomcat-7.0.68\temp\tess4j\win32-x86-64\gsdll64.dll (The process cannot access the file because it is being used by another process) 
java.io.FileNotFoundException: C:\apache-tomcat-7.0.68\temp\tess4j\win32-x86-64\gsdll64.dll (The process cannot access the file because it is being used by another process) 
at java.io.FileOutputStream.open0(Native Method) 
at java.io.FileOutputStream.open(FileOutputStream.java:270) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:213) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:162) 
at org.apache.commons.io.FileUtils.doCopyFile(FileUtils.java:1142) 
at org.apache.commons.io.FileUtils.doCopyDirectory(FileUtils.java:1446) 
at org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:1388) 
at org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:1268) 
at org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:1237) 
at net.sourceforge.tess4j.util.LoadLibs.copyResources(LoadLibs.java:136) 
at net.sourceforge.tess4j.util.LoadLibs.extractTessResources(LoadLibs.java:105) 
at net.sourceforge.tess4j.util.LoadLibs.<clinit>(LoadLibs.java:59) 
at net.sourceforge.tess4j.util.PdfUtilities.<clinit>(PdfUtilities.java:207) 
at net.sourceforge.tess4j.util.ImageIOHelper.getIIOImageList(ImageIOHelper.java:314) 
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:214) 
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:198) 
at Util.ReadFiles.OCR(ReadFiles.java:248) 
at Util.ReadFiles.readImages(ReadFiles.java:184) 
at Util.ReadFiles.dispatcher(ReadFiles.java:97) 
at Util.ReadFiles.<init>(ReadFiles.java:71) 
at Web.Controller.DocumentController.search(DocumentController.java:350) 
at Web.Controller.DocumentController.getDocuments(DocumentController.java:780) 
at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at javax.el.BeanELResolver.getValue(BeanELResolver.java:99) 
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) 
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) 
at org.apache.el.parser.AstValue.getValue(AstValue.java:184) 
at org.apache.el.parser.AstEmpty.getValue(AstEmpty.java:46) 
at org.apache.el.parser.AstNot.getValue(AstNot.java:43) 
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) 
at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50) 
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) 
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) 
at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:457) 
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1276) 
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1286) 
at javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1286) 
at javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1254) 
at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:78) 
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:78) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at Util.AuthorizationFilter.doFilter(AuthorizationFilter.java:35) 
at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2517) 
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2506) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745) 

여기 내 호출하는 방법입니다 :

/** 
* Reading PDF and images with Tesseract OCR 
* @param filePath 
* @return content 
*/ 
public String OCR(String filePath) 
{ 
    String content = null; 

    File imageFile = new File(filePath); 

    Tesseract ins = new Tesseract(); 
    ins.setDatapath("../tessdata"); 

    try { 
     content = ins.doOCR(imageFile); // <-- Exception thrown from here 

    } catch (TesseractException e) { 

     System.err.println(e.getMessage()); 
    } 

    return content; 
} 

screenshot에서 볼 수있는 바와 같이, DLL이 존재하고, 내 웹 응용 프로그램은 정팔 포체를 사용하는 유일한 응용 프로그램입니다, 그래서 정말이를 사용하는 과정을 모르는 도서관 ... 어떤 아이디어 제발!

답변

0

글쎄, 나는 서버를 계속 실행하고 그냥 프로젝트를 재구성하는 대신에 tesseract가 처음으로 나온 후에 dll을 해제하지 않은 서버 자체이기 때문에 항상 서버를 다시 시작해야한다고 생각했다. 라는.

희망이 미래

PS에서 사람을 도움이 될 것입니다 : 내가 IntellijIdea을 사용하고 있습니다.

관련 문제

 관련 문제