Байт-код в исходный код Java
Можно ли преобразовать файл .class
файл .java
?
Как это может быть сделано?
Как насчет правильности кода, извлеченного из этой опции?
Ответы
Ответ 1
Это возможно. Для этого нужен Java Decompiler.
В основном вы найдете удивительно хорошую работу. То, что вы получите, является допустимым .java
файлом, который будет скомпилирован в файл .class
, но этот файл .java
не обязательно будет таким же, как исходный исходный код. Такие вещи, как конструкции цикла, могут возникать по-разному, и все, что компилирует время, например, дженериков и аннотаций, не будет воссоздано.
У вас может возникнуть проблема, если код был запутан. Это процесс, который изменяет файлы классов, чтобы затруднить их декомпиляцию. Например, имена классов и переменных изменяются, чтобы все были похожи, поэтому в итоге вы получите код типа aa.a(ab)
вместо employee.setName(name)
, и очень сложно разобраться, что происходит.
Я помню, как это делал JAD, но я не думаю, что это активно поддерживается, поэтому он может не работать с никогда не версиями Ява. A Поиск Google для декомпилятора java даст вам много вариантов.
Ответ 2
Да, попробуйте JAD Java Decompiler
Ответ 3
Это возможно с помощью одного из доступных декомпиляторов Java. Поскольку вы работаете с байт-кодом, который может быть оптимизирован компилятором (вставка статических переменных, реорганизация потока управления и т.д.), То, что вы получаете, может быть не совсем таким же, как исходный код, но он будет функционально эквивалентен.
Ответ 4
Добавление к предыдущим ответам: недавно появилась новая волна декомпиляторов, а именно Procyon, CFR, JD, Fernflower
Вот список современных декомпиляторов по состоянию на март 2015 года:
- Процион
- CFR
- JD
- Fernflower
Вы можете протестировать выше упоминание декомпиляторов онлайн, не требуется установка и сделать свой собственный образованный выбор.
декомпиляторы Java в облаке: http://www.javadecompilers.com/
Ответ 5
Возможно, но код, который вы получите, может быть неправильным. Однако поиск некоторых декомпиляторов Java.
Ответ 6
Это всегда возможно. Найдите "jass disassembler".
Но комментарии исходного кода и временные переменные не будут доступны.
Если вы декомпилируете класс и видите, что код слишком сложный с именами переменных, а имена методов похожи на a, b, c..., это означает, что проект запутан.
Ответ 7
Не совсем декомпилятор, но JDK содержит javap, дизассемблер:
javap -c org.example.MyClass
В зависимости от вашей учетной записи вам может быть интересно узнать или использовать.
Обратите внимание, что результаты декомпиляции файла класса зависят от включенной информации в файле класса. Если я правильно помню, включал отладочную информацию (видеть -g флаг javac), особенно для обозначения переменных и т.п.
Ответ 8
Я использую JAD, но позже переключился на другой, что, на мой взгляд, лучше - здесь
Ответ 9
DJ - это простой в использовании java decompiler. Просто откройте любой файл .class, и он покажет вам его код java
.
Кроме того, вы можете использовать jadClipse плагин для eclipse, чтобы напрямую декомпилировать .class в .java
What about the correctness of the code extracted from this option?
В любом случае код, который будет сгенерирован любым декомпилятором java, не будет таким же, как и в оригинальном классе java. Поскольку он просто декодирует байт-код в java-код. Единственное, что вы можете быть уверены, это то, что результат будет таким же, как и исходный код Java.
Ответ 10
Вам нужен декомпилятор. www.Decompiler.com - хороший онлайн-декомпилятор.