我该如何从Jar文件中提取源代码?

9

我收到了一个Java产品的源代码,需要进行进一步的更改。档案中包含一堆JAR文件。

这些文件是否足够用于开发应用程序,还是只能用于分发?

5个回答

10
如果你确实收到了一个Java产品的源代码,而你所拥有的只是JAR文件,那么这些JAR文件(实际上是具有不同文件后缀和特定"清单"类型的ZIP文件)应该包含许多文件,这些文件的后缀为".java"。您可以使用任何ZIP归档工具来检查此内容。
如果JAR中没有".java"文件(例如仅有许多".class"和其他文件),则您没有该产品的源代码。 鉴于您不是Java开发人员,进行更改将非常困难。
假设您是合法地进行此操作的(即在产品开发者的明示或暗示许可下进行),如果您能够同时获得产品的构建说明,您将节省很多时间。例如,如果它使用Ant构建,则需要"build.xml"文件。

9

一个jar文件类似于一个zip文件,它可能包含或不包含你需要用于开发的源代码。你可以在这里了解有关jar文件的更多信息。


WinZip或任何其他存档管理器都可以打开.jar文件。对于某些存档程序,您可能需要将扩展名更改为.zip。 - Chris Nava
2
一个JAR文件类似于一个ZIP文件 - 一个JAR文件就是一个遵循特定约定的ZIP文件,用于存储归档内容。 - Stephen C

5
通常情况下,您会将编译后的.class文件打包在.jar文件中进行分发,但是您也可以将任何类型的文件(包括源代码)放入.jar归档文件中。如果您需要更改库中的代码,则需要查看源代码。
您的项目中的.jar文件也可能是第三方(或内部专有)库,您根本不需要对其进行更改。在jar中包含您只需使用而不需要修改的库很普遍。如果其他应用程序代码可访问,则可以仅修​​改它而不接触库代码。

如果jar文件只包含.class文件,那么我就不能修改应用程序了吗? - SharpAffair
2
你仍然可以修改 .class 文件。只是要困难得多。 - JUST MY correct OPINION
@Sphynx:是的,正如所述,这是可能的,但难度极大。在尝试仅使用.class文件之前,我会竭尽全力获取源代码。 - Bill the Lizard

2
任何现代的Java集成开发环境都可以让您导入jar文件并将其用作库代码。这不需要源代码等。您可以开发新代码,其中包含更改。
如果您需要修改jar文件中的代码,则最好获得该jar文件的源代码,然后使用它来进行操作。
如果您没有源代码,并且需要更改类,则可以

0

你可以尝试将jar文件反编译回其源代码,否则这些jar文件对开发帮助不大。

然而,如果jar文件包含一些你在项目中必须的库/包/类,它们仍然可以帮助你。这样,如果你使用Netbeans IDE,你可以将它们添加到编译路径中并在不查看源代码的情况下使用它们。但是,这种方法最适合在项目进行某种增量开发时使用。因此,它高度依赖于你构建软件的方式,即它是否是增量式的,或者你是否想修改你收到的内容...对于后者,你可能需要考虑反编译或请求源代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接