【问题标题】:How javap works for java library files?javap 如何处理 java 库文件?
【发布时间】:2011-07-13 14:31:57
【问题描述】:

JRE 包含库类的 .class 文件。

什么时候会用到这些JRE文件夹中的.class文件?

JRE 是否包含所有库类的 .class 文件。

让我们举个例子..

当我们导入库文件时,我们使用的是来自 src.zip 而不是 .class 文件的类文件的定义。例如。 导入 java.net.InetAddress。那只是我们继承了库类。因此库类的代码也符合我们的代码na..

我们没有直接使用 .class 文件。那么在 JRE 文件夹中为这些库文件添加 .class 文件有什么用?

我搜索了 JRE 文件夹,但没有找到 InetAddress 的 .class 文件

但是命令 javap java.net.InetAddress 仍然可以正常工作。

请有人帮忙。

提前致谢。

【问题讨论】:

    标签: compilation java .class-file javap


    【解决方案1】:

    javap 在 JRE 中运行,因此它的类路径中包含 JRE 附带的所有类。您将感兴趣的大多数类都在 rt.jar 存档中。

    如果你想反编译你自己的类,你必须将它的基目录添加到类路径中

    e.g.
    $ ls
    HelloWorld.class
    
    $ javap -c -classpath . HelloWorld
    

    【讨论】:

    • 什么时候会用到这些JRE文件夹中的.class文件?
    • 除非您用自己的版本替换它们。 Java 应用程序没有它们就无法运行。
    【解决方案2】:

    是的,JRE 包含类文件。

    【讨论】:

    • 我也搜索了JRE,但没有找到.class文件。
    • 正如彼得在回答中所说,它们将在 rt.jar 存档中。
    • 什么时候会用到这些JRE文件夹中的.class文件?
    • 即。当我们导入库文件时,我们使用的是 src.zip 中类文件的定义。 (例如)导入 java.net.InetAddress。那只是我们正在继承这个类。我们没有直接使用 .class 文件。那么在 JRE 文件夹中为这些库文件提供 .class 文件有什么用
    • 我们直接使用类文件。当“javac”编译您的代码时,它的类路径中有来自 JRE 目录的 .class 文件,当您引用 java.net.InetAddress 时,“javac”将查看 JRE 中的类文件。当您运行“java”时,它将再次在类路径中包含来自 JRE 的 .class 文件,并在运行您的代码时引用它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多