我熟悉jar结构,它将在classes目录中包含.class文件,并在META-INF
目录中包含main()
的信息。
但是实际的java代码在哪里驻留在jar中? 它是否存在编译的字节代码?但是,不同的机器有不同的编译器吗?
我知道我可以使用反编译器提取java代码,这可能是非法的。但我对此并不感兴趣。我更了解如何存储代码? 它加密了吗?如果是这样,加密算法是什么?罐子里面的位置是什么?
答案 0 :(得分:3)
除非您另行指定,否则源代码不包含在JAR文件中。 JAR文件通常只包含类文件(编译的JVM指令),而不是源代码。
答案 1 :(得分:1)
JAR文件只是一个ZIP文件,重命名为Java ARchive。 你可以检查里面是什么,解压缩。如果您使用的操作系统不允许您解压缩该存档,因为它似乎不是压缩文件,只需将扩展名更改为ZIP即可。 JAR文件未加密。
Java源代码是在平台中立的 Java字节码中编译的,这是一种中间二进制文件。 一旦JVM加载了类,它就会解释 字节码 或 及时 将其编译到底层机器。 JAR通常只包含 字节码
通常情况下,来源不包含在JAR中,特别是用于分发。有些项目也会在单独的存档中提供源代码。您应该咨询您正在处理的JAR的提供者以获取消息来源。
如果反编译是非法的,则取决于应用于JAR的许可条款。你应该检查一下。 反编译一个类对象并不是一件容易的事,但是一个人习惯用他的JAD做得很好。 不幸的是,它不再维护,但有一些网站,你仍然可以下载它。 反编译的类看起来并不像真正的资源,你可能需要进行一些更改,但你肯定会对源代码有所了解。