Как извлечь исходный код из файла Jar?

Я получил исходный код для продукта Java для внесения дальнейших изменений. Архив содержит кучу файлов JAR.

достаточно ли для разработки приложения или только для распространения этих файлов?

5 ответов


Я получил исходный код для продукта Java ...

Если вы действительно получили исходный код продукта, и все, что у вас есть, это файлы JAR, то файлы JAR (которые на самом деле являются ZIP-файлами с другим суффиксом файла и определенным видом "манифеста") должны содержат кучу файлов с расширением файла ".ява." Вы должны иметь возможность проверить это с помощью любого инструмента ZIP-архива.

если нет ".java " файлы в Банки (например, только много".класс " и другие файлы), у вас нет исходного кода для продукта. Внесение изменений будет на самом деле очень трудно, учитывая, что вы не являетесь разработчиком Java.

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


jar аналогичен zip-файлу, поэтому они могут содержать или не содержать исходный код, необходимый для разработки. Вы можете прочитать о jar files здесь.


обычно вы упаковываете .класса (составитель) файлы и распространять их .файлы jar, но можно поместить любой файл, который вы хотите (включая исходный код) в a .jar-архива. Если вам нужно изменить код в библиотеке,вам нужно будет увидеть источник.

также возможно, что.файлы jar в вашем проекте - это сторонние (или внутренние проприетарные) библиотеки, которые вам не нужно будет менять вообще. Довольно часто включают библиотеки, которые вы просто используете без изменение в вашей банке. Если остальная часть кода приложения доступна, вы можете просто изменить это без касания кода библиотеки.


любая современная Java IDE позволяет вам сбрасывать файлы jar и использовать их в качестве библиотечного кода. Это не требует источника etc. Затем вы можете развиваться new код, который включает в себя изменения.

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

Если у вас нет исходного кода, и вы должны изменить класс, то вы можете декомпилировать класс использование, например, JAD в Java-файле (будьте осторожны, может содержать ошибки), а затем работать с этим. Вам просто нужно иметь этот класс перед jar в пути к классам (если только jar не запечатан, а затем у вас есть совершенно новый вопрос для stackoverflow).

У вас есть более опытные программисты Java в вашей команде, вы можете попросить о помощи?


вы можете попробовать декомпилировать файлы jar обратно в их источник, в противном случае файлы jar не очень помогут в разработке.

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