我的计算机是用日语设置的(嘿,这是很好的语言练习),一切都很好,花花公子......除了javac
。它向控制台显示本地化的错误消息,但它们是Shift-JIS,而不是UTF8:
$ javac this-file-doesnt-exist.java
javac: ?t?@?C??????????܂???: this-file-doesnt-exist.java
?g????: javac <options> <source files>
?g?p?\?ȃI?v?V?????̃??X?g?ɂ??ẮA-help ???g?p???܂
如果我通过nkf -w
管道输出,它是可读的,但这不是一个很好的解决方案:
$ javac this-file-doesnt-exist.java 2>&1 | nkf -w
javac: ファイルが見つかりません: this-file-doesnt-exist.java
使い方: javac <options> <source files>
使用可能なオプションのリストについては、-help を使用します
Everything 在命令行中运行正常(使用UTF8);我可以用日语输入文件名,tab-completion工作正常,vi可以编辑UTF-8文件等。虽然java
本身用英语吐出所有的消息(很好)。
以下是我环境的相关内容:
LC_CTYPE=UTF-8
LANG=ja_JP.UTF-8
从它的外观来看,javac
没有正确地获取编码,而java
根本没有提取语言。我也尝试了-Dfile.encoding=utf8
,但这确实是虚无...,JVM工具链的本地化文档几乎不存在,至少来自谷歌。
附录:
Macports OpenJDK6有更好的行为:
$ /opt/local//share/java/openjdk6_bootstrap/bin/javac this-file-doesnt-exist.java
javac: file not found: this-file-doesnt-exist.java
Usage: javac <options> <source files>
use -help for a list of possible options
答案 0 :(得分:1)
这是日本环境中OS X上一个众所周知的javac故障。 我自己做过一些谷歌搜索,但我找不到根本的治疗方法。目前,我正在使用的临时解决方案是
javac -J-Dfile.encoding=utf8
以日语UTF-8编码的错误消息。请注意,它不是-D
,而是-J-D
。如果您想要英文错误消息,请使用
LC_ALL=C javac -J-Dfile.encoding=utf8
如果您愿意,可以随时将它们变成别名:
alias javac="LC_ALL=C javac -J-Dfile.encoding=utf8"
答案 1 :(得分:0)
您在终端中启用了哪些字符编码?我猜它不允许javac使用的编码。在首选项&gt;下查看;编码。