Ich habe eine Web-Anwendung Java, die eine Datei von einem Netzlaufwerk zu lesen braucht. Es funktioniert perfekt, wenn ich es auf einem lokalen Host-Test-Server ausführen, wie ich angemeldet bin mit meinen Windows-Anmeldeinformationen. Es funktioniert jedoch nicht, wenn es auf einem Unternehmensserver bereitgestellt wird.Nullpointer, wenn neue SmbFileInput Schaffung
Ich habe versucht, einen Weg zu implementieren Benutzerdaten entlang zu schicken, wenn sie versuchen auf die Datei zuzugreifen, und mein aktueller Versuch wird mit The Java CIFS Client Library
ich meine Versuchen in this answer auf dem Code bin stützen, obwohl mein Code Bedürfnis aus einer Datei lesen statt auf eine schreiben. Ich bekomme eine NullpointerException, die ich nicht erklären kann.
Code:
public static void main(String[] args) {
String filePath = "[myPath]";
String USER = "domain;username:password";
try {
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(USER);
SmbFile sFile = new SmbFile(filePath, auth);
if(sFile.exists()){
InputStream stream = new SmbFileInputStream(sFile); //throws exception
}
} catch (SmbException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Fehler:
Exception in thread "main" 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 Test.main(Test.java:45)
Die Benutzerdaten werden akzeptiert. Ich habe sowohl gültige als auch ungültige Anmeldeinformationen ausprobiert, und die ungültigen geben Benutzeridentifikationsfehler.
Die Ausnahme wird ausgelöst, wenn die Input zu schaffen, die denken würde mich normalerweise machen, dass der Parameter sFile
Objekt, null
sein würde, oder ein null
Feld haben. Ich weiß nicht, welches Feld das sein könnte. Debugging zeigt, dass isExists = true
. Die URL ist ebenfalls gültig. Hier ist ein Screenshot von meinem sFile Objekt aus dem Debugger:
was ich hier fehlt? Warum bekomme ich eine Nullpointerexzeption?