sikuli没有找到图像文件

时间:2015-08-05 17:31:30

标签: java maven sikuli

使用sikulixapi 1.1.0在Java中尝试使用Sikuli,但它找不到我的图像文件。

      screen.click("images/Terminal.png");

Maven(shade)将我的src / main / resources / images按预期放入JAR的顶层“images”目录中。但是运行uberjar并没有找到图像。

~/hello $ java -cp target/hello.jar hello.TestSikuli
 [error] Image: could not be loaded: file://Users.../hello/images/Terminal.png

它正在查看当前目录(恰好是项目目录),而不是在JAR中。我在程序中打印出了imagePath,它是一个空数组。

如何获取它(可能使用imagePath.add?)来搜索调用的JAR? 我曾经想过它会默认看到它。

我尝试了另一件事:

URL u = this.getClass().getClassLoader().getResource("images/Terminal.png");
Region r = screen.find(u);

但那会爆炸;如果我传递这里显示的URL,我会得到“无效参数”;如果我传递.toString,我得到:

FindFailed: Region: doFind: Image not loadable:
jar:file:/Users/.../Sikulix/j/hello/target/hello-1.0-SNAPSHOT.jar!/images/Terminal.png

Sikluix中似乎没有流输入接口,所以可能这样做无法完成。

3 个答案:

答案 0 :(得分:5)

这有效:

  ImagePath.add(TestSikuli.class.getCanonicalName() + "/images");

可能还有一种将图像加载到内存中的解决方法。 https://answers.launchpad.net/sikuli/+question/232217

答案 1 :(得分:0)

导入此库

import org.sikuli.basics.ImageLocator;

并使用此功能查找图像目录路径

ImageLocator.setBundlePath("path to img directory");

并执行 jar 文件,运行以下命令

  cd "your directory"

  java -jar hello.jar

答案 2 :(得分:0)

Screen s1 = new Screen();
s.dragDrop("Drag elemtn location.png","Drag elemtn location.png");

您可以指定要拖动的元素路径位置,也可以指定为drop。