图片文件无法找到java

时间:2013-08-06 12:48:13

标签: java sikuli

我正在使用eclipse,我的代码: -

package arrowRecog;

import org.sikuli.api.*;
import java.io.File;
import arrowRecog.res.*;

public class FocusTrain
{
    public static void main(String[] args) throws Exception
    {
         Target oneDown = new ImageTarget(new File("arrowRecog.res","1down.jpg"));
    }
}

树:

http://i1316.photobucket.com/albums/t601/Preformer/tree_zps1e15285b.jpg

例外:

http://i1316.photobucket.com/albums/t601/Preformer/error_zps05bc7502.jpg

2 个答案:

答案 0 :(得分:5)

问题是字符串文字的“\ 1”部分。那不是反斜杠后跟1 - 这是一个八进制转义序列,产生U + 0001。要获得你想要的字符串,你想要:

Target oneDown = new ImageTarget(new File("arrowRecog.res\\1down.jpg"));

或更好 - 更便携:

Target oneDown = new ImageTarget(new File("arrowRecog.res/1down.jpg"));

甚至更好:

Target oneDown = new ImageTarget(new File("arrowRecog.res", "1down.jpg"));

(实际上,我使用Java的每个平台都已经使用/作为目录分隔符,但是使用带有两个字符串的File构造函数通常仍然是一个好主意。)< / p>

答案 1 :(得分:0)

我不知道你为什么要把非源代码资源放到src目录中。这里的目录由Eclipse解释为包,因此它们以“folder.subfolder”格式显示。 File类使用的是文件系统,而不是java类路径格式,因此“arrowRecog.res”不会被解释为带有子目录“res”的“arrowRecog”目录,但它将搜索“arrowRecog.res”目录 - 这是不存在。换句话说,该点不会用于路径分隔符,而是作为目录名称的一部分。

此外,由于您使用的是相对路径,这意味着相对于工作目录。工作目录默认是Eclipse中项目的主目录(如果我没记错的话)。所以你错过了路径中的“src”目录。

new File("src/arrowRecog/res/1down.jpg")

new File("arrowRecog/res/1down.jpg")

应该可以正常工作,具体取决于工作目录的设置方式。

最好的办法是在 src 目录旁边创建一个新目录(例如,名为 res ),所有图片都会移动到那里。