Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java是否需要运行.class文件(即使已定义)_Java_Eclipse - Fatal编程技术网

Java是否需要运行.class文件(即使已定义)

Java是否需要运行.class文件(即使已定义),java,eclipse,Java,Eclipse,我今天刚开始使用Java,在运行代码时遇到NoClassDefFoundError: class Example { public static final String greeting = "Hi there"; public static void main(String[] args) { System.out.format("%s", Example.greeting); } } 上面是我的example.java代码的内容。这段代码在Ec

我今天刚开始使用Java,在运行代码时遇到NoClassDefFoundError:

class Example {

    public static final String greeting = "Hi there";

    public static void main(String[] args) {
        System.out.format("%s", Example.greeting);
    }
}
上面是我的example.java代码的内容。这段代码在Eclipse执行时编译得很好,但当我尝试单独运行example.java时,它失败了。当我运行这个程序时,Eclipse也创建了一些.class文件,但这并不能解释为什么如果我在另一个目录中单独运行.java会失败,因为类示例的所有信息都在.java文件中

尽管在程序中定义了类本身,Java是否仍需要编译和运行.class文件?为什么?我还通过terminal构建了.java文件,效果很好

Java是否需要编译和运行.class文件,尽管在程序中定义了类本身?为什么

java文件类的编译输出是.class文件。它包含JVM运行的程序的字节码。因此,运行该程序需要.class文件

我还通过terminal构建了.java文件,效果很好

即使通过终端,当编译.java文件类时。它为.java文件中声明的每个类创建.class。然后执行包含main方法的类。主要方法是JVM的入口点

例如: 文件名:example.java 编译代码:javac example.java 输出为.class文件:Example.class。因为类的名称是示例。 运行程序:java示例

代码中的错误。看起来这个问题已经更新了

班名不是学生。应该是:

System.out.format("%s", Example.greeting);

Java程序的编译和执行分为两步:

在编译阶段,Java编译器编译源代码并生成字节码。此中间字节码以.class文件的形式保存

在第二阶段,Java虚拟机JVM(也称为Java解释器)将.class作为输入,并通过执行字节码生成输出

是的。类文件对于代码的执行是必不可少的。java文件是您编写的文本,但不是机器可以解释的文本

以下是发生的情况的流程图:

要更深入地了解它,请执行以下操作:

构建Java项目时,它会将*.Java源文件中包含的源代码转换为*.class文件中最常见的Java字节码。这使您的高级代码离机器代码更近了一步,但还不完全如此。该字节码是紧凑指令的集合;机器更容易解释,但可读性较差


当您在计算机、手机或任何其他支持Java的平台上运行Java应用程序时,您基本上是将Java字节码传递给Java虚拟机。Java虚拟机中的解释器通常在运行时开始编译整个字节码,遵循所谓的即时编译原则。这导致了打开Java应用程序时的典型延迟,尽管通常是轻微延迟,但与解释编译相比,通常会提高程序性能。

学生类在哪里?不能运行.Java文件,它只是一段文本。您需要一个.class文件,.java包含代码,.class包含要由JVM解释的字节码。此外,运行程序所需的所有类都应该在类路径中。对不起,Student静态变量实际上是示例,请在StackOverflow上错误地表示它。如果您有时间,请阅读本教程。将启发您并解决您未来对java的一些疑问
System.out.format("%s", Example.greeting);