ubuntu中的Sikuli自动化

时间:2014-03-26 04:49:41

标签: ubuntu automation ubuntu-12.04 sikuli

我试图在ubuntu 12.4中安装sikuli 按照以下网站中提到的步骤进行操作

http://www.verious.com/tool/installing-sikuli-automation-tool-on-ubuntu-11-10/

安装在ubuntu中的java是

~$ java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

sikuli-ide成功加载,当我试图在屏幕上捕获图像时,我正在追踪错误

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: /home/ushusadmin/sikuli/Sikuli-IDE/libs/libVisionProxy.so: libml.so.2.1: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1062)
at com.wapmx.nativeutils.jniloader.NativeLoader.loadLibrary(NativeLoader.java:44)
at org.sikuli.script.TextRecognizer.(TextRecognizer.java:24)
at org.sikuli.ide.NamingPane.getFilenameFromImage(NamingPane.java:55)
at org.sikuli.ide.CaptureButton.update(CaptureButton.java:149)
at org.sikuli.script.CapturePrompt.notifyObserver(CapturePrompt.java:44)
at org.sikuli.script.CapturePrompt$1.mouseReleased(CapturePrompt.java:197)
at java.awt.Component.processMouseEvent(Componen

t.java:6505)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Window.processEvent(Window.java:2022)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(

Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

我怎样才能摆脱这个错误。我花了很多时间来纠正这个错误并真的厌倦了:-(专家pelase帮帮我

1 个答案:

答案 0 :(得分:5)

我在你的堆栈跟踪中注意到了这一点:

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: /home/ushusadmin/sikuli/Sikuli-IDE/libs/libVisionProxy.so: libml.so.2.1: cannot open shared object file: No such file or directory

关于没有找到libml.so.2.1的投诉让我怀疑你有一个旧版本的Sikuli。

所以,我建议使用最新的Sikuli版本(1.0.1),并确保至少安装了OpenCV 2.4.0。

请注意,Sikuli 1.0.1依赖于OpenCV 2.4.0,而您链接的指南则来自2.3.0可接受的日期。

我会尝试删除2.3版本的libcv-dev软件包(如果你有的话),而是从opencv2.4 PPA repo安装libcv-dev:

sudo add-apt-repository ppa:gijzelaar/opencv2.4

另外,我注意到Sikuli人已经发布了一个特殊版本的libVisionProxy.so供下载;不确定它是否有意帮助像您这样的系统,但是如果使用Sikuli 1.0.1和OpenCV 2.4.0无法帮助,那么值得一试。

有问题的文件是Sikuli-1.0.1-Supplemental-LinuxVisionProxy.zip https://launchpad.net/sikuli/+download

最后,如果它有帮助,这里是我用来在Ubuntu 12.04上运行Sikuli 1.0.1的完整步骤:

  1. 安装Oracle JRE(我使用1.7.0_51,就像你的环境一样)

  2. 安装OpenCV 2.4.0

    sudo add-apt-repository ppa:gijzelaar/opencv2.4
    
    sudo apt-get update
    
    sudo apt-get libcv-dev
    

    或者,您可以通过以下步骤从源代码构建/安装OpenCV 2.4.0来实现相同的目标:

    http://karytech.blogspot.com/2012/05/opencv-24-on-ubuntu-1204.html

    注意当我尝试这个时,我省略了安装QT包的步骤并删除了" -D WITH_QT = ON"在构建OpenCV时从我的cmake命令。

  3. 安装Tesseract 3:

    sudo apt-get install libtesseract3

  4. 下载sikuli-setup.jar并将其保存到〜/ SikuliX

  5. 启动sikuli-setup.jar并将Sikuli安装到〜/ SikuliX

    cd ~/SikuliX && java -jar sikuli-setup.jar

    我选择了" Pack 1"选项,让设置正常进行。

  6. 在IDE中创建一个Sikuli脚本并运行它。

    另外,我发现使用" runIDE -r"运行.sikuli项目。选项非常有助于解决依赖性问题;与在IDE中运行脚本相比,这似乎导致了有关错误的更多信息。例如:

    ~/SikuliX/runIDE -r foo.sikuli

  7. 以下是我的操作系统和JRE环境详细信息:

    $ lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 12.04.3 LTS
    Release:    12.04
    Codename:   precise
    
    $ java -version
    java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)