Android/Java-IO异常-can';似乎无法加载HTML资源
brownbear.html位于资产文件夹中,并写入主活动中。最初它是一个单独的.java类,但我还不能精确地研究出“上下文”在主活动之外时是如何影响AssetManager的,我正在尝试在排除故障时减少未知因素 如前所述,“尝试”打印出来,没有日志。我打印出来(大概是因为我们在这方面失败了)Android/Java-IO异常-can';似乎无法加载HTML资源,java,android,jsoup,android-assetmanager,Java,Android,Jsoup,Android Assetmanager,brownbear.html位于资产文件夹中,并写入主活动中。最初它是一个单独的.java类,但我还不能精确地研究出“上下文”在主活动之外时是如何影响AssetManager的,我正在尝试在排除故障时减少未知因素 如前所述,“尝试”打印出来,没有日志。我打印出来(大概是因为我们在这方面失败了) CalendarParse parser = new CalendarParse(); parser.countSundays(this); public cla
CalendarParse parser = new CalendarParse();
parser.countSundays(this);
public class CalendarParse {
String calString = "";
Document cal = null;
InputStream is = null;
public void countSundays(Context context)
{
AssetManager assMan = context.getAssets();
try
{
System.out.println("Trying");
InputStream is = assMan.open("assets/brownbear.html");
if (is == null){
Log.i("FAIL","File not found.");
}
else{
Log.i("SUCCESS","We did it");
}
Document cal = Jsoup.parse(is, "utf-8", "ob stuff");
Element calBlock = cal.select("table#CalBlock").first();
Element calRows = calBlock.select("tr").get(0);
Log.i("SUCCESS","Parsing has occurred");
System.out.println(calRows.toString());
}
catch(IOException e){
System.out.println("IO Exception at local calendar asset");
}
}
)“本地日历资源的IO异常”总是打印出来
如果我把那行改成
InputStream is = assMan.open("assets/brownbear.html");
然后“成功”“我们做到了”运行,但是发生了一个致命的异常:
2019-02-01 02:28:06.069 5637-5637/?E/AndroidRuntime:致命异常:主
进程:com.myapplication.schedulo,PID:5637
java.lang.RuntimeException:无法启动activity ComponentInfo{com.myapplication.schedulo/com.myapplication.schedulo.MainActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“org.jsoup.select.Elements org.jsoup.nodes.Element.select(java.lang.String)”
我做错了什么
assMan.open("brownbear.html");
NullPointerException位于第二行,因为第一行(
calBlock
)的结果为null。您应该检查选择器“table#CalBlock”
与所需内容不匹配的原因。尝试分析文档cal
的HTML,并检查它是否包含id为CalBlock
的
。您确定正在解析的页面没有使用JavaScript动态/异步加载某些片段吗 你搞定了。非常感谢。
Element calBlock = cal.select("table#CalBlock").first();
Element calRows = calBlock.select("tr").get(0);