我首先要说的是我使用的是Netbeans和Java(JDK 8 x64)。我已经安装了Sikuli选择安装Sikuli IDE的选项以及它与其他IDE一起使用的选项。
使用Sikuli IDE时,它可以很好地找到图像。当我将该图像复制到我的项目资源文件夹并尝试通过Netbeans中的项目找到它时,它无法找到它。
我相信我使用的版本是Sikuli的1.0.1。
以下是我正在尝试的测试代码:
public class TestSikuli {
public static void main(String[] args) {
Screen s = new Screen();
try{
s.click("resources/startBtn.png");
} catch(FindFailed e){
e.printStackTrace();
}
}
}
我假设它不知道resources / startBtn.png在哪里。所以我尝试使用
ImageLocator.addImagePath(System.getProperty(" user.dir" + File.separator +" resources")
但是,当打印出ImageLocator.getImagePath()的内容时,它似乎不会添加图像路径。
我的问题似乎是,让Sikuli在Netbeans for Java中工作的必要步骤是什么。我偶然发现了Jython的一些设置步骤,但我不确定这些是否对Java来说是必要的,因为它看起来有点复杂。
我是否需要在PATH中添加内容?我需要添加另一个环境变量吗?到目前为止,我所做的就是使用安装程序,然后将jar添加到我的Netbeans项目中。
任何和所有建议将不胜感激。我已经在几天内一直在寻找一个正确的答案,并且认为我只是求助于StackOverflow。
编辑:为标签添加了Eclipse,因为假设每个IDE集成Sikuli的过程应该相对类似。
答案 0 :(得分:1)
如果addImagePath()函数似乎不起作用,您可以自己尝试修改图像路径。来自1.0.1文档:
注意:在幕后,此列表使用密钥SIKULI_IMAGE_PATH在java属性存储中维护。这可以在使用环境变量SIKULI_IMAGE_PATH启动JVM时预设,并且可以使用访问设置 - Java级别中提到的方法在运行时访问。请注意,这是一个字符串,其中不同的条目用冒号(:)分隔。 [source]
尝试类似:
java.lang.System.getProperty("SIKULI_IMAGE_PATH", "user.dir" + File.separator + "resources");
或者,您可以将图片存储在广告素材之外,然后尝试使用setBundlePath()
。
注意:我使用Jython和Sikuli 1.1.0,所以我没有测试提供的代码。
答案 1 :(得分:0)
这里有点不合适,因为我并不真正使用Java和我的Sikuli。但是,由于我构建一个批处理文件来运行我的Sikuli程序,也许你确实有一个错误的路径。
启动Sikuli IDE并制作Hello World程序时。然后它用.sikuli制作一张地图。在那些是它需要的所有文件。我想如果你用另一个IDE打开它,你需要那个地方的所有那些文件,就像Hello World程序一样。
另一件事是,在安装Sikuli时,它会创建安装它的目录/文件。我知道从你执行它的地方来看它是非常挑剔的。也许这也可能就是这种情况?
也许您应该看看click()
是否被识别为命令。