创建工作簿时 JXL 中的 NullPointerException

NullPointerException in JXL when creating a workbook

该程序在另一台电脑上运行良好。我把它导入到我的家用电脑上,但它不起作用。

错误行:

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")) returns 是非空对象或 wbook 是非空对象?

我认为问题与这两个实体为空有关。因此,在创建工作簿之前,请检查与错误行关联的两个项目是否都不是空对象。

你可以这样做。

File file = new File("bstncopy.xls");
if(file != null && wbook != null){
    wwbCopy = Workbook.createWorkbook(file, wbook); 
}