【发布时间】:2018-11-16 10:24:14
【问题描述】:
试图修改另一台机器上的excel。传递 IP 地址、用户名、密码和文件路径来访问和修改文件,但在 new SmbFileInputStream(sFile) 处得到 NullPointerException。这是什么原因?
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("domin", "username", "password");
String path = "smb:\\\\<IPaddress>\\C$\\<FolderName>\\File%20-%20Input.xlsx";
SmbFile sFile = new SmbFile(path, auth);
try {
SmbFileInputStream inputStream = new SmbFileInputStream(sFile);
Workbook workbook = WorkbookFactory.create(inputStream);
Sheet sheet = workbook.getSheetAt(0);
int rowCount = sheet.getLastRowNum(),i=0;
Cell cell;
for(ForemostReservedDataDO obj : unsavedRecords){
i++;
Row row = sheet.createRow(rowCount+i);
cell = row.createCell(0);
cell.setCellValue(obj.getPolicyNum());
cell = row.createCell(1);
cell.setCellValue("Recreational Value");
}
inputStream.close();
SmbFileOutputStream sfos = new SmbFileOutputStream(sFile);
workbook.write(sfos);
workbook.close();
sfos.close();
} catch (EncryptedDocumentException | InvalidFormatException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
全栈
SEVERE: Servlet.service() for servlet [spring-dispatcher] in context with path [/Foremost] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at jcifs.smb.ServerMessageBlock.writeString(ServerMessageBlock.java:213)
at jcifs.smb.ServerMessageBlock.writeString(ServerMessageBlock.java:202)
at jcifs.smb.SmbComNTCreateAndX.writeBytesWireFormat(SmbComNTCreateAndX.java:170)
at jcifs.smb.AndXServerMessageBlock.writeAndXWireFormat(AndXServerMessageBlock.java:101)
at jcifs.smb.AndXServerMessageBlock.encode(AndXServerMessageBlock.java:65)
at jcifs.smb.SmbTransport.doSend(SmbTransport.java:439)
at jcifs.util.transport.Transport.sendrecv(Transport.java:67)
at jcifs.smb.SmbTransport.send(SmbTransport.java:655)
at jcifs.smb.SmbSession.send(SmbSession.java:238)
at jcifs.smb.SmbTree.send(SmbTree.java:119)
at jcifs.smb.SmbFile.send(SmbFile.java:775)
at jcifs.smb.SmbFile.open0(SmbFile.java:989)
at jcifs.smb.SmbFile.open(SmbFile.java:1006)
at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:73)
at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:65)
at com.Foremost.Controllers.DataDownController.saveReservedData(DataDownController.java:217)
【问题讨论】:
-
请将 NPE 的完整 Stacktrace 添加到您的问题中。
-
感谢 Stacktrace。您使用的是哪个版本的 JCIFS?
-
jcifs 版本为 1.3.17
-
谢谢(您应该将其添加到问题中)。这是一个非常的旧版本,你应该升级到最新版本:mvnrepository.com/artifact/org.codelibs/jcifs/2.1.3(注意:新 groupId)
-
抱歉,下次一定会提版本。您能否根据我的要求提供最新版本(2.1.3)的任何示例代码。我写的是最新的 jar 编译错误(因为这些是不推荐使用的方法)
标签: java nullpointerexception jcifs