Назад | Перейти на главную страницу

java.nio.file.FileSystemException: файловая система только для чтения

У меня есть веб-приложение tomcat, которое генерирует эскиз из изображения и хочет сохранить его в доступном для записи месте (chmod 777). Но почему-то всегда получаю java.nio.file.FileSystemException ошибки и запись этого изображения невозможна.

Он работает на моем локальном компьютере (на котором запущено веб-приложение в intellij), но не на моем сервере Azure ubuntu 18.04 vm. Я могу создать файл в этом каталоге из терминала как любой пользователь.

java.nio.file.FileSystemException: /var/www/html/static/avatars/8SZK9w.jpg: Read-only file system
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:215) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:478) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/java.nio.file.Files.newOutputStream(Files.java:219) ~[na:na]
Jun 25 17:07:17 ubu18 tomcat9[103802]:         at java.base/java.nio.file.Files.write(Files.java:3487) ~[na:na]
...

Я пробовал много вещей, таких как изменение владельца папки, chmod 777 it, изменение пути к / tmp (вместо этого вызвало исключение FileNotFoundException), используя другой код Java для записи файла. Я также отключил аппармор.

Любой совет о том, что вызывает это?

Эта проблема связана с песочницей Debian для tomcat. Решение было описано здесь:

https://stackoverflow.com/questions/56827735/how-to-allow-tomcat-war-app-to-write-in-folder