ubuntu - ubuntu 中的 Sikuli 自动化

标签 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)

我怎样才能摆脱这个错误。我花了我的时间来纠正这个错误并且真的受够了:-(专家请帮助我

最佳答案

我在您的堆栈跟踪中注意到了这一点:
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 可接受的日子。

我会尝试删除 libcv-dev 包的 2.3 版本(如果你有的话),而是从 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.ziphttps://launchpad.net/sikuli/+download

最后,如果有帮助,这里是我用来在 Ubuntu 12.04 上启动和运行 Sikuli 1.0.1 的完整步骤:
  • 安装 Oracle JRE(我使用的是 1.7.0_51,就像你的环境一样)
  • 安装 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 包的步骤,并在构建 OpenCV 时从我的 cmake 命令中删除了“-D WITH_QT=ON”。
  • 安装 Tesseract 3:
    sudo apt-get install libtesseract3
  • 下载 sikuli-setup.jar 并保存到 ~/SikuliX
  • 启动 sikuli-setup.jar 并将 Sikuli 安装到 ~/SikuliX
    cd ~/SikuliX && java -jar sikuli-setup.jar
    我选择了“Pack 1”选项并让安装程序正常进行。
  • 在 IDE 中创建一个 Sikuli 脚本并运行它。

    此外,我发现使用“runIDE -r”选项运行 .sikuli 项目对于解决依赖问题非常有帮助;与在 IDE 中运行脚本相比,这似乎会导致有关错误的更多信息。例如:
    ~/SikuliX/runIDE -r foo.sikuli

  • 以下是我的操作系统和 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)
    

    关于ubuntu - ubuntu 中的 Sikuli 自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22651721/

    相关文章:

    java - 在android studio中获取连接被拒绝(连接被拒绝)

    python ubuntu virtualenv -> 错误

    c - Eclipse 中不兼容指针类型的赋值

    java - 不使用 XPath 从 webtable 内的元素获取文本(Selenium Web 驱动程序 + Java)

    bash - bashrc 中的别名不起作用 - 其他一切都是

    linux - MongoDB:Windows 上不支持 unix 套接字

    javascript - 如何在 Angular Protractor 中使用类单击日历图标

    java - 检测在 selenium java 中下载的文件

    Eclipse 代码辅助在 Ubuntu 12.04 中不起作用

    amazon-web-services - "Reset"亚马逊 EC2 服务器