2013-11-26 53 views
2

最近,我们正在将java构建作业从serverA迁移到serverB,java源代码(包含中文字符)很好地在Ant原始服务器A上编译(< javac encoding =“GBK”... > ),但是,当我们将相同的代码签出到新的服务器B并运行相同的Ant脚本时,出现编码错误为“用于编码GBK的不可映射字符”。 (JDK版本是相同的)。Javac编译编码问题

我们不知道为什么具有相同Ant编码参数的相同源代码可能具有不同的编译结果。

是否有任何可能导致此问题的设置,操作系统设置?

谢谢。

+2

你确定这是源代码吗?对两台服务器上的同一文件进行文件比较。在退出到serverB时,字符编码可能会搞砸了一些东西。 –

+0

@TedHopp我认为你的意思是从同一个存储库中检出实际上可能由于潜在的损坏而获得不同的文件编码。 我比较了来自serverA和serverB的错误文件与Beyond Compare,他们似乎是相同的。 – foolhunger

+0

很奇怪......我会检查'JAVA_HOME'和'javac -version'以确保正在使用正确的java。 –

回答

2

一些调查后

  1. java文件确实有GBK编码的问题。
  2. 在serverB上,Ant构建脚本具有javac参数source = 1.6 target = 1.6,而serverA不。

从serverB上删除<javac>任务中的这两个参数后,复杂化成功。

我们仍然不明白确切的原因,但至少现在解决了问题。

如果您有任何线索为什么发生这种情况,请在下面留下评论。

谢谢