使用Jsoup时java.io.FileNotFoundException

时间:2015-04-20 10:19:48

标签: java jsoup

我尝试从当前项目中读取.html资源(并解析它),如下所示:

enter image description here

leaflet.html:

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div>TODO write content</div>
    </body>
</html>

当我尝试使用Jsoup运行以下代码时:

import java.io.File;
import org.jsoup.nodes.Document;
import org.jsoup.Jsoup;

// some code 

 File input = new File("\\src\\main\\resources\\leafletfile.html");
          System.out.print(input.getAbsolutePath()); // This works 
 //Exception is here:
 Document doc =  Jsoup.parse(input, "UTF-8", "http://example.com/"); 

我得到以下例外:

java.io.FileNotFoundException: \src\main\resources\leafletfile.html (The system cannot find the path specified)

任何人都可以提供建议吗?提前谢谢!

1 个答案:

答案 0 :(得分:3)

要从资源获取文件,您应该使用不同的方法:

new File(getClass().getClassLoader().getResource("leaflet.html").getFile());

您的方法正在查看文件系统中您提供的路径作为参数。你的路径不是绝对的路径,而是相对于jar的路径。

如果这是静态方法,你应该在getClass()之前提供类名,如:

new File(ClassName.class.getClassLoader().getResource("leaflet.html").getFile());

这是因为getClass()单独解析为this.getClass(),但静态上下文中没有this

请记住在将文件添加到资源后进行清理和构建。