我尝试从当前项目中读取.html资源(并解析它),如下所示:
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)
任何人都可以提供建议吗?提前谢谢!
答案 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
。
请记住在将文件添加到资源后进行清理和构建。