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

时间:2010-07-03 14:17:56

标签: java jar

我收到了Java产品的源代码以进行进一步的更改。存档包含一堆JAR文件。

是否足以开发应用程序或仅用于分发的文件?

5 个答案:

答案 0 :(得分:9)

jar类似于zip文件,因此它们可能包含也可能不包含开发所需的源代码。您可以阅读jar文件here

答案 1 :(得分:9)

  

我收到了Java产品的源代码......

如果您确实收到了产品的源代码,并且您所拥有的只是JAR文件,那么JAR文件(实际上是具有不同文件后缀和特定类型“清单”的ZIP文件)< em>应该包含一堆文件后缀为“.java”的文件。您应该能够使用任何ZIP存档工具进行检查。

如果JAR中没有“.java”文件(例如,只有很多“.class”和其他文件),则表示您没有该产品的源代码。鉴于您不是Java开发人员,进行更改真的很难

假设您正在合法地执行此操作(即,在产品开发人员明确或暗示的许可下),如果您获取产品的构建说明,则可以节省大量时间。例如,如果它是使用Ant构建的,则需要“build.xml”文件。

答案 2 :(得分:5)

通常,您打包.class(已编译)文件并将它们分发到.jar文件中,但是可以将任何类型的文件(包括源代码)放在.jar存档中。如果您需要更改库中的代码,则需要查看源代码。

项目中的.jar文件也可能是第三方(或内部专有)库,您根本不需要更改它们。包含您刚刚使用的库而不在jar中进行修改是很常见的。如果可以访问其余的应用程序代码,则可以修改它而不用触及库代码。

答案 3 :(得分:2)

任何现代Java IDE都允许您放入jar文件并将其用作库代码。这不需要源等。然后您可以开发包含更改的 new 代码。

如果您需要在jar中更改代码,那么通过使用您需要更新的jar的源代码,然后使用它来做得更好。

如果您没有源代码,并且需要更改类,那么您可以使用以下方法对该类进行反编译: JAD到Java文件(小心,可能包含错误),然后使用它。你只需要在类路径中的jar前面安装该类(除非jar被密封,然后你有一个关于stackoverflow的全新问题)。

您的团队中是否有更多经验丰富的Java程序员,您可以寻求帮助吗?

答案 4 :(得分:0)

您可以尝试将jar文件反编译回其源代码,否则 jar文件对开发没有多大帮助。

但是,当jar文件包含一些时,它们可以帮助你 您认为必不可少的库/包/类 你正在做的一个项目。那样你就可以 如果您正在使用它们,请将它们添加到编译路径中 Netbeans IDE并使用它们甚至没有偷看 资源。但是,如果你这样做,这将是最好的 在您的项目上进行某种增量开发。 所以,这在很大程度上取决于你如何建立你的 软件,即它是增量的还是你想要的 修改你收到的内容...对于后者你,可能 考虑反编译或要求源代码