我正在使用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
答案 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 ),所有图片都会移动到那里。