0

我正在使用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

4

2 回答 2

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构造函数获取两个字符串通常仍然是一个好主意。)

于 2013-08-06T12:50:17.370 回答
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),然后所有图像都移到那里。

于 2013-08-06T13:29:11.160 回答