因此,我正在尝试编写一个尝试编译另一个Java项目的Java程序,并使用编译器中出现的任何潜在错误(在本例中为Javac),程序将尝试修复损坏的代码.这是我正在尝试做的极其简化的视图,但我真正的问题是我找不到任何可能来自Javac的具体错误列表.我不想把它变成一场巨大的语言战争,但C#(当然)有一个我正在寻找的确切例子
http://msdn.microsoft.com/en-us/library/ms228296%28v=vs.80%29.aspx
我已经找到http://mindprod.com/jgloss/compileerrormessages.html,但正如本网站其他地方所述,此列表包含来自Jikes和其他编译器的错误.
如果有人有任何信息,我当然会感激.
编辑:如果有人想知道这件事,我最终会打开位于jdk(version_here)/ lib中的tools.jar文件.如果你想真正阅读这些消息,你可以从那里去sun/tools/javac/javac.properties.您需要提取此文件夹/文件.希望这隐藏在文档的某处,因为我讨厌解决方案成为本手册.谢谢所有发布答案的人,我将仔细研究一切,以便更好地解决这个问题.
好吧,我认为你不会找到任何关于这一点的明确信息。但是编译器消息可能是国际化的,在这种情况下它们必须被翻译,这意味着通常应该只有少数文件包含所有错误消息。
所以我认为这应该有用。似乎您应该仔细查看javac 源代码中的compiler.properties文件 - 显然并不完美,但可惜我认为您不会得到任何更好的东西。
至少这应该让你得到他们抛出的每个错误,然后你可以通过谷歌搜索或者更好地通过源代码 grep 找到它实际抛出的位置,以找出确切的原因。
PS:该文件是 jdk7 源代码的一部分,所以这里是一个小例子 - 完整的文件约为 1.5kloc
# 0: symbol, 1: string, 2: string
compiler.err.cant.inherit.diff.arg=\
{0} cannot be inherited with different arguments: <{1}> and <{2}>
compiler.err.catch.without.try=\
''catch'' without ''try''
# 0: symbol kind, 1: symbol
compiler.err.clash.with.pkg.of.same.name=\
{0} {1} clashes with package of same name
Run Code Online (Sandbox Code Playgroud)