繁体   English   中英

未编译的Java类,但仍执行

[英]Uncompiled java class but still executes

我的一个Java程序中有以下代码。

public class Solution {

    public static void main(String[] args) {
        System.out.print("Hello World");
}

    public static void printOutput(String[] arr){

        //Note: The semi colon is omitted intentionally.
        System.out.print("Hello Incomplete World")
}

当我生成它时,我得到一个编译错误,但是仍然生成一个.class文件。 当我运行.class文件时,其输出为“ Hello World”。

这怎么可能 ? 我一直认为,具有未解决的编译问题的.class文件永远不会是可执行文件。 谁能提供一些有关的信息?

这里可能发生的事情是已经存在一个成功编译的类文件。 Java编译器运行时,如果成功编译源文件,它将生成一个.class文件,但不会删除后续的编译失败。

您假设编译器将清除您的旧类文件-不会。

检查当前.class文件的修改日期-您会发现它比编译的文件更旧。 那是因为它是从工作代码生成的,而不是从当前源文件生成的。 如果删除该类文件,然后尝试重新编译,则会看到未创建新的类文件。

您正在运行的类文件来自先前的编译。 再次编译您的程序,并查看先前修改类文件的时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM