在哪里可以找到所有可能的Java编译时错误的列表?

tko*_*mon 7 java javac

因此,我正在尝试编写一个尝试编译另一个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.您需要提取此文件夹/文件.希望这隐藏在文档的某处,因为我讨厌解决方案成为本手册.谢谢所有发布答案的人,我将仔细研究一切,以便更好地解决这个问题.

Voo*_*Voo 1

好吧,我认为你不会找到任何关于这一点的明确信息。但是编译器消息可能是国际化的,在这种情况下它们必须被翻译,这意味着通常应该只有少数文件包含所有错误消息。

所以我认为应该有用。似乎您应该仔细查看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)