В настоящее время я работаю над плагином Maven, который использует JAXB.Проблема в том, что, запускаю ли я чистую установку в IntelliJ или в консоли, я не получаю одинаковых результатов.JAXB читает файл XML, закодированный в UTF-8, который содержит специальные символы.
В IntelliJ эти символы читаются без проблем.Но в консоли эти символы заменены на '?'(Я могу видеть это, если я делаю sysout).
Я нашел источник своей проблемы, но я действительно не понимаю ее, и я не знаю, как ее решить: когда IntelliJ запускает mvn,он добавляет дополнительный параметр -Dfile.encoding=UTF-8
java -classpath /usr/share/maven/boot/plexus-classworlds-2.4.jar -Dclassworlds.conf=/usr/share/maven/bin/m2.conf -Dmaven.home=/usr/share/maven -Dfile.encoding=UTF-8 org.codehaus.plexus.classworlds.launcher.Launcher clean install
Когда я запускаю mvn в командной строке, я могу добавить этот дополнительный параметр, но он появится после имени класса:
java -classpath /usr/share/maven/boot/plexus-classworlds-2.4.jar -Dclassworlds.conf=/usr/share/maven/bin/m2.conf -Dmaven.home=/usr/share/maven org.codehaus.plexus.classworlds.launcher.Launcher -Dfile.encoding=UTF-8 clean install
В обоих случаях, если я использую содержимое System.getProperty("file.encoding")
, я получаю то же значение "UTF-8", но другое поведение.
Конечно, я правильно настроил свой pom.xmlиспользуя свойство, подобное этому:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Я также пытался добавить второе свойство с именем "file.encoding", но это не помогает.
Мой вопрос: почему позиция этого системного свойства меняет поведение моей программы и как я могу исправить мою проблему, когда запускаю mvn из командной строки?
Заранее спасибо.