3

我花了很长时间试图解决这个问题,但无济于事。我已经搜索了 stackoverflow 和 Google,但无法解决我的(看似)简单的问题。

我在以下行中收到 FileNotFoundException:

Image.FromFile("\\Resources\\Icons\\key-icon.png");

文件夹和图像确实在那里,我看不出问题出在哪里。

4

6 回答 6

11

您应该考虑它是从“yourproject/bin/Release”开始的,因此您需要向上 2 个目录。做这个:

Image.FromFile("..\\..\\Resources\\Icons\\key-icon.png"); 
于 2012-09-10T11:21:57.920 回答
4

尝试使用绝对路径而不是相对路径...即

Image.FromFile(Server.MapPath(@"~\Resources\Icons\key-icon.png"));
于 2012-09-10T11:19:47.860 回答
1
Image.FromFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                            @"Resources\\Icons\\key-icon.png"))

基目录结合你的文件名

于 2012-09-10T11:50:59.150 回答
0

您可能缺少前导“。”:

Image.FromFile(".\\Resources\\Icons\\key-icon.png");
于 2012-09-10T11:14:51.507 回答
0

在内部,Image.FromFile用于File.Exists检查文件是否存在。此方法在以下情况下返回false

  • 该文件不存在(有意义)
  • 当前进程标识没有读取文件的权限

可能是第二个选项是您的问题。

还有另一种可能:是Resources网络共享吗?在这种情况下,您应该使用以下内容:

Image.FromFile("\\\\Resources\\Icons\\key-icon.png");
于 2012-09-10T11:22:32.010 回答
0

对于这种情况,我发现 sikuli 不会自动检测项目的根文件夹。对于这种情况,您应该做的是使用命令指定文件夹System.getProperty("user.dir");

import org.sikuli.script.*;

public class Test {

    public static void main(String[] args) {
            Screen s = new Screen();
            try{
                    String pathYourSystem = System.getProperty("user.dir") + "\\";
                    s.click(pathYourSystem + "imgs/spotlight.png");
                    //s.wait(pathYourSystem + "imgs/spotlight-input.png");
                    //s.click();
                    s.write("hello world#ENTER.");
            }
            catch(FindFailed e){
                    e.printStackTrace();
            }
    }
}
于 2021-03-26T15:28:33.727 回答