Подход к решению этой проблемы заключается в log4j.properties
Я поднял уровень до TRACE
.
Там я увидел дополнительный журнал перед TranscoderException
, который видел раньше:
2012-02-28 11:51:24,863 DEBUG: org.apache.fop.fonts.FontCache:
Writing font cache to /usr/share/jetty/.fop/fop-fonts.cache
org.apache.batik.transcoder.TranscoderException:
Error while setting up PDFDocumentGraphics2D
Ужас для логов! (И запись журнала о том, что программа собирается делать, а не только после того, как она это сделала, чтобы в случае сбоя операции вы знали, что она пыталась сделать, пока она не удалась.)
В Debian веб-сервер Jetty работает под пользователем jetty
и имеет свой домашний каталог по адресу /usr/share/jetty/
. Однако пользователь jetty
не имеет доступа на запись к своему домашнему каталогу, поэтому этот каталог ~/.fop
не может быть создан.
adrian@10770-02:~$ grep jetty /etc/passwd
jetty:x:107:111::/usr/share/jetty:/bin/false
adrian@10770-02:~$ ls -ld /usr/share/jetty
drwxr-xr-x 7 root root 4096 Feb 28 11:52 /usr/share/jetty/
Я не знаю, является ли это намерением или ошибкой, но создаю этот каталог, чтобы Jetty могла написать его ...
sudo mkdir -p -m 0777 /usr/share/jetty/.fop
... решил проблему.