创建工作簿时JXL中的NullPointerException
程序在另一台PC上正常工作。我将它导入家用电脑中,无法使用。创建工作簿时JXL中的NullPointerException
错误的线路:
wwbCopy = Workbook.createWorkbook(new File("bstncopy.xls"), wbook);
堆栈跟踪:基于堆栈跟踪
java.lang.NullPointerException
at jxl.read.biff.ExternalSheetRecord.getNumRecords(ExternalSheetRecord.java:135)
at jxl.write.biff.ExternalSheetRecord.<init>(ExternalSheetRecord.java:107)
at jxl.write.biff.WritableWorkbookImpl.<init>(WritableWorkbookImpl.java:219)
at jxl.Workbook.createWorkbook(Workbook.java:325)
at jxl.Workbook.createWorkbook(Workbook.java:306)
at ReadDataBst.<init>(ReadDataBst.java:28)
at Graph.<init>(Graph.java:23)
at Dijkstra.<init>(Dijkstra.java:4)
at GUIWindowBuilder.<init>(GUIWindowBuilder.java:28)
at Main.main(Main.java:6)
,它看起来像你的代码尝试取消引用空指针,因此NullPointerException异常。如你所说错误的行:
wwbCopy = Workbook.createWorkbook(new File("bstncopy.xls"), wbook);
做你检查Workbook.createWorkbook(new File("bstncopy.xls"))
返回一个非空的对象或wbook
是这个点之前的非null对象?
我相信问题与这两个实体为空相关联。因此,在创建工作簿之前,请检查与错误行相关的项目是否都不是空对象。
你可以做这样的事情。
File file = new File("bstncopy.xls");
if(file != null && wbook != null){
wwbCopy = Workbook.createWorkbook(file, wbook);
}
我不知道如何检查这一点,因为wbook和wwbcopy没有显示在调试模式下的变量,我不明白..顺便说一句,我是初学者。 –
@SymbioseStudios看到我更新的答案。 –
根据您的代码,工作簿不为null。为什么工作簿在调试模式下没有显示为变量? –
也许'wbook'是'null'?或者'bstncopy.xls'不存在? – Tunaki