2013-08-29 2 views
1

Windows에서 다음과 같은 문제가 있습니다. 대화 형 모드에서 SikuliScript를 사용하고 있는데 잘 작동합니다. 이미 자바 예외 때문에 VisionProxy.dll를 얻을 수 있습니다 그러나여러 인스턴스를 동시에 시작할 때 VisionProxy.dll에서 Sikuli 스크립트 IO 오류가 발생했습니다.

"C:\Program Files (x86)\Java\jre6\bin\java.exe" -jar "E:\APPS\Sikuli\Runtime\sikuli-script.jar" -i 

을 내가 (수동 또는 예약 된 작업을 통해) 같은 시간에 약 두 배 이상이 명령을 실행하는 경우 : 그건 내가 그것을 실행하는 데 사용하는 명령 줄입니다 내 임시 디렉터리에 존재하고 사용에 적극적이기 때문에 (물론 다른 명령으로) 덮어 쓸 수 없습니다 : 그래서 방법을 모르는 라이브러리가로드되는 경우 DLL이 Sikuli 자체가 넣어됩니다

java.io.FileNotFoundException: C:\Users\%USERNAME%\AppData\Local\Temp\2\tmplib\VisionProxy.dll (The process cannot access the file because it is being used by another process) 
at java.io.FileOutputStream.open(Native Method) 
at java.io.FileOutputStream.<init>(Unknown Source) 
at java.io.FileOutputStream.<init>(Unknown Source) 

이것을 막기 위해서. 누구든지 비슷한 문제가 있었고 해결 했습니까?

감사 & 감사

답변

0

더 빠르고 쉽게 수정이를 위해 없습니다합니다.

무슨 일이 일어나고 있는지 sikuli - script jar는 하나의 독립적 인 병으로 포장하기 위해 약간의 트릭을 사용하고 있습니다. jar 파일에는 필요할 수있는 모든 네이티브 라이브러리가 포함되어 있으며, 실행하면 실제로 필요한 코드 (Windows_x86, 아마도)를 파악하고, 임시 디렉토리로 jar 파일을 가져 와서 동적으로 링크합니다 . 한 번에 두 개를 실행하면 DLL 추출 프로세스가 실패하게됩니다. 한 프로세스가 다른 프로세스의 파일을 stomps 처리하기 때문입니다.

유일한 수정 프로그램은 코드를 변경하는 것입니다. Sikuli의 소스 코드를 가져 와서 동적 링크 트릭을 수행하는 위치를 찾아 제거해야합니다. 그런 다음 직접 빌드하고 DLL에 수동으로 링크해야합니다. 그렇게하면 한 번에 여러 인스턴스를 실행할 수 있습니다 (얼마나 유용할지 모르겠지만).