如果我导出没有源文件的jar,实际的java代码驻留在哪里?

时间:2014-10-02 05:17:40

标签: java jar

我熟悉jar结构,它将在classes目录中包含.class文件,并在META-INF目录中包含main()的信息。

但是实际的java代码在哪里驻留在jar中? 它是否存在编译的字节代码?但是,不同的机器有不同的编译器吗?

我知道我可以使用反编译器提取java代码,这可能是非法的。但我对此并不感兴趣。我更了解如何存储代码? 它加密了吗?如果是这样,加密算法是什么?罐子里面的位置是什么?

2 个答案:

答案 0 :(得分:3)

除非您另行指定,否则源代码包含在JAR文件中。 JAR文件通常只包含类文件(编译的JVM指令),而不是源代码。

答案 1 :(得分:1)

JAR文件只是一个ZIP文件,重命名为Java ARchive。 你可以检查里面是什么,解压缩。如果您使用的操作系统不允许您解压缩该存档,因为它似乎不是压缩文件,只需将扩展名更改为ZIP即可。 JAR文件未加密。

Java源代码是在平台中立的 Java字节码中编译的,这是一种中间二进制文件。 一旦JVM加载了类,它就会解释 字节码 及时 将其编译到底层机器。 JAR通常只包含 字节码

通常情况下,来源不包含在JAR中,特别是用于分发。有些项目也会在单独的存档中提供源代码。您应该咨询您正在处理的JAR的提供者以获取消息来源。

如果反编译是非法的,则取决于应用于JAR的许可条款。你应该检查一下。 反编译一个类对象并不是一件容易的事,但是一个人习惯用他的JAD做得很好。 不幸的是,它不再维护,但有一些网站,你仍然可以下载它。 反编译的类看起来并不像真正的资源,你可能需要进行一些更改,但你肯定会对源代码有所了解。