在java中找不到图像文件

在java中找不到图像文件,java,sikuli,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

我正在使用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"));
    }
}
树:

例外情况:

问题在于字符串文本的“\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的每个平台都将
/
作为目录分隔符,但是使用
文件
构造函数获取两个字符串通常还是个好主意。)

问题在于字符串文本的“\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的每个平台都将
/
作为目录分隔符,但是使用
文件
构造函数获取两个字符串通常仍然是一个好主意。)

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

另外,由于您使用的是相对路径,这意味着相对于工作目录。默认情况下,工作目录是Eclipse中项目的主目录(如果我没记错的话)。因此,您的路径中缺少“src”dir

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

根据您的工作目录的设置,可能会起作用


最好的做法是在src目录旁边创建一个新目录(例如称为res),然后所有图像都移动到那里。

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

另外,由于您使用的是相对路径,这意味着相对于工作目录。默认情况下,工作目录是Eclipse中项目的主目录(如果我没记错的话)。因此,您的路径中缺少“src”dir

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

根据您的工作目录的设置,可能会起作用


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

尝试了第三种修复方法,我仍然得到完全相同的异常。你能看看我的树吗?是我的weakpoint@Preformer:不,您不会得到完全相同的异常。看看你发布的屏幕截图,然后看看你得到的异常——看看相关的名字(就在“down.jpg”之前)。现在,如果您没有将文件放在与运行代码的位置相关的正确位置,那么这是一个单独的问题。是的,它是相同的。现在你已经看到了我的代码、树和异常,你认为jpeg文件应该在哪里?尝试了第三次修复,我仍然得到了完全相同的异常。你能看看我的树吗?是我的weakpoint@Preformer:不,您不会得到完全相同的异常。看看你发布的屏幕截图,然后看看你得到的异常——看看相关的名字(就在“down.jpg”之前)。现在,如果您没有将文件放在与运行代码的位置相关的正确位置,那么这是一个单独的问题。是的,它是相同的。现在,您已经看到了我的代码、树和异常,您认为jpeg文件应该在哪里?