Где я могу найти список всех возможных ошибок времени компиляции Java? - PullRequest
7 голосов
/ 16 августа 2011

Итак, я пытаюсь написать программу на 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 и других компиляторов.

Если у кого-то есть информация, я, безусловно, был бы благодарен.

Edit: Если кто-то еще задумывался над этим, я в конце концов разорвал файл tools.jar, расположенный в jdk (version_here) / lib. Оттуда вы перейдете к sun / tools / javac / javac.properties, если вы действительно хотите прочитать сообщения. Вам нужно будет извлечь эту папку / файл. Надеюсь, это где-то спрятано в документации, потому что я ненавижу решения, которые будут в этом руководстве. Спасибо всем, кто отправил ответы, я собираюсь просмотреть все, чтобы лучше подходить к этому.

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Ну, я не думаю, что вы найдете что-то определенное в этом.Но сообщения компилятора могут быть интернационализированы, и в этом случае они должны быть переведены, что означает, что обычно должны быть только несколько файлов, содержащих все сообщения об ошибках.

Так что это должно быть полезно, я думаю.Похоже, вам стоит присмотреться к файлу compiler.properties в исходном коде javac - очевидно, не идеально, но, увы, я не думаю, что вы получите что-то лучше.

По крайней мере, это должно дать вам каждую ошибку, которую они выдают, и вы можете либо прогуглить его, либо лучше поискать источник, чтобы найти места, где он на самом деле брошен, чтобы выяснить точные причины.* 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
0 голосов
/ 16 августа 2011

Компилятор Eclipse JDT делает то, что вы пытаетесь сделать.

...