Я использовал jad в течение многих лет, большинство из них с плагином Jadclipse для затмения, что делает его вполне пригодным для использования. Особенно с «Align code for debugging», который позволяет вам видеть декомпилированный код для любой строки в трассировке стека. Очень мило.
К сожалению, я все больше и больше замечаю, как проскакивает комментарий <- MISALIGNED ->, что, скорее всего, связано с тем, что jad ожидает, что файл класса будет в порядке, что явно не относится к библиотеке времени исполнения Java 6. Следовательно, при записи файла, и инструкция говорит «это строка 100», тогда записывается 99 пустых строк, и если затем следующая инструкция говорит «это строка 10», то JAD не может перемотать, чтобы поместить эти выходные данные, но просто печатает комментарий, что это не в том месте.
Вот пример для HttpURLConnection:
protected HttpURLConnection(URL url, Proxy proxy, Handler handler1)
{
/* <-MISALIGNED-> */ /* 603*/ super(url);
/* <-MISALIGNED-> */ /* 192*/ ps = null;
/* <-MISALIGNED-> */ /* 196*/ errorStream = null;
/* <-MISALIGNED-> */ /* 199*/ setUserCookies = true;
/* <-MISALIGNED-> */ /* 200*/ userCookies = null;
/* <-MISALIGNED-> */ /* 220*/ currentProxyCredentials = null;
/* <-MISALIGNED-> */ /* 221*/ currentServerCredentials = null;
/* <-MISALIGNED-> */ /* 222*/ needToCheck = true;
/* <-MISALIGNED-> */ /* 223*/ doingNTLM2ndStage = false;
/* <-MISALIGNED-> */ /* 224*/ doingNTLMp2ndStage = false;
/* <-MISALIGNED-> */ /* 226*/ tryTransparentNTLMServer = NTLMAuthentication.supportsTransparentAuth();
/* <-MISALIGNED-> */ /* 227*/ tryTransparentNTLMProxy = NTLMAuthentication.supportsTransparentAuth();
/
Вопрос теперь в том, есть ли другой декомпилятор, который генерирует более точные выходные данные. Фактическая декомпиляция не обязательно должна быть очень большой или что-то в этом роде, но мне очень нравится, что она должна быть там, где ожидается представление Java Stack Trace. Если это хорошо работает с Jadclipse, это еще лучше.