Files.createTempDirectory(«») вызывает исключение NullPointerException

#java #windows #nullpointerexception #nio2 #tempdir

#java #Windows #исключение nullpointerexception #nio2 #tempdir

Вопрос:

При вызове Files.createTempDirectory("") я получаю приведенное ниже исключение:

 java.lang.NullPointerException
at sun.nio.fs.WindowsSecurityDescriptor.fromAttribute(WindowsSecurityDescriptor.java:353)
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:220)
at java.nio.file.Files.newByteChannel(Files.java:315)
at java.nio.file.Files.createFile(Files.java:586)
at java.nio.file.TempFileHelper.create(TempFileHelper.java:138)
at java.nio.file.TempFileHelper.createTempFile(TempFileHelper.java:161)
at java.nio.file.Files.createTempFile(Files.java:803)
  

Ни один из примеров использования Files.createTempDirectory("") , которые я нашел, не был передан ни в одном FileAttribute s .
Я пробовал, Files.createTempDirectory("", new FileAttribute<?>[] { }); но это тоже не помогло.

Я использую 32-разрядный JDK 7 в системе Windows 7. Я не являюсь локальным администратором на компьютере.

Кто-нибудь сталкивался с этим?

ОБНОВЛЕНИЕ 1:

Files.createTempFile(this.tempDir.toPath(), "tmpFile", ""); похоже, та же проблема.

В качестве обходного пути я перешел к com.google.common.io.Files.createTempDir() .

Комментарии:

1. Просто попробовал это с JDK1.7.0_07, проблем не возникло. Какой из них вы используете?

2. Я использую 1.7.0_11-b21. Вероятно, это как-то связано со средой Windows 7 у моего работодателя.

3. Похоже, это все еще происходит в Java 1.8 / Windows 7.

Ответ №1:

Вы пробовали использовать Files.createTempDirectory(null) вместо Files.createTempDirectory("") . В документации вы можете прочитать, что можно передать префикс как нулевой объект.

https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#createTempDirectory-java.lang .Строка-java.nio.file.attribute.Атрибут FileAttribute…-