我目前正在使用一个使用JAXB的Maven插件。问题是,无论我在IntelliJ还是在控制台中启动全新安装,我都没有得到相同的结果。 JAXB正在读取以UTF-8编码的XML文件,其中包含特殊字符。使用mvn编译时的编码问题
在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
在这两种情况下,如果我SYSOUT的System.getProperty("file.encoding")
的内容,我得到了相同的值“UTF -8“,bu不同的行为。
当然,我配置了我的pom.xml正确使用属性是这样的:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
我也尝试添加一个名为“file.encoding的”第二个属性,但它并不能帮助。
我的问题是:为什么这个系统属性的位置会改变我的程序的行为,当我从命令行运行mvn时,如何解决我的问题?
在此先感谢。
您使用JAXB的代码在Maven构建期间运行,对不对?另外,你为什么认为这些字符被错误地读取?也许他们不能在控制台输出中表现出来。 – axtavt 2012-02-02 17:02:53
是的,它在Maven构建过程中运行。我确定这些字符被错误地读取,因为我使用JAXB解组生成的对象来生成输出文件。这些文件在IntelliJ中生成时是正确的,但在从控制台生成时不正确。另外,如果我从控制台运行正确的命令,我可以在控制台输出中看到正确的字符:) – 2012-02-02 17:37:44
复制http:// stackoverflow。com/questions/1431008 – 2012-06-04 11:10:00