Я пытаюсь передать некоторые строки в качестве аргументов в файл .jar, который выполняю с помощью командной строки в linux debian. Часть строк - это расширенные символы, такие как символ авторского права или буква ü.
java -jar someJar_CL.jar arg1 arg2 'Lizenziert für foo © foobar'
При windows при использовании PowerShell все работает просто отлично. Файл .jar выполняется должным образом. Тем не менее, в linux я получаю следующее исключение:
java.lang.IllegalArgumentException: U+FFFD ('.notdef') is not available in this font Helvetica encoding: WinAnsiEncoding
at org.apache.pdfbox.pdmodel.font.PDType1Font.encode(PDType1Font.java:426)
at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:342)
at org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:373)
at watermark.app.AddWatermarkToFile.watermarkPdf(AddWatermarkToFile.java:101)
at watermark.app.AddWatermarkToFile.watermarkPdfs(AddWatermarkToFile.java:51)
at watermark.gui.BatchWatermarkPDFFile.main(BatchWatermarkPDFFile.java:113)
В моем понимании, это исключение означает, что в программе есть проблемы с расширенными символами ascii. Если я удаляю их, он выполняется правильно (в linux).
У меня нет прямого доступа к исходному коду файла .jar, но я не думаю, что это необходимо, поскольку он выполняется правильно в windows (все зависит от ОС).
Я не думал, что это будет решением, но я установил шрифты ms с apt-get install msttcorefonts
. Это ничего не изменило.
Как я могу исправить эту проблему? Это как-то связано со шрифтом Helvetica? Будет ли он работать с другим шрифтом в linux? Я могу связаться с разработчиком .jar и попросить внести изменения, но только если это действительно необходимо.
Заранее спасибо.