我们通过键入来运行 Java 程序java <programname>,其中<programname>表示从我的源代码编译的 Java 类文件。为什么我不能简单地通过键入来启动程序<programname>?
5 回答
Java 被编译为字节码而不是本机可执行代码。由于操作系统和生成的字节码之间没有自动关联,因此您需要一个本机解释器来运行代码。
系统需要一个本机可执行命令,它不理解 .class 文件。
对于 Java,本机可执行文件在 JRE 安装的 /bin/ 目录中提供。
类文件在 JVM 上运行,而不是在底层系统上。这个“java”可执行文件启动 JVM 并将提供的类加载到它。
Java 程序总是在 JVM 中运行,“java”命令调用 JVM。JVM 是虚拟机,表示物理机中的逻辑机,这意味着您的程序名称是对虚拟机(逻辑机)的直接命令。在java中程序被编译成字节码,这是逻辑机(JVM)的机器码,因此它可以直接在虚拟机(JVM)上而不是在操作系统上执行。您的 Java 程序不是您的操作系统的机器代码,这就是为什么您不能通过将程序名称放在命令提示符上直接运行您的 Java 程序的原因。
因为 .class 文件在 Windows 上不被识别为可执行文件。然而程序 java 是一个 .exe(所以 windows 知道它是一个可执行文件),所以你输入 java 来启动 java 程序,然后告诉它顶部打开你的 .class 文件。
Windows 中没有“胶水”(由 Microsoft 提供),它知道如何将您映射command到执行您的command.class. 因此,您必须自己进行调用。
请注意,某些 Java 安装允许单击 jar 文件(它们是包含类文件的 zip 文件)以在其中运行应用程序。