我在我的一个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文件永远不会是可执行文件。任何人都可以提供一些信息吗?
答案 0 :(得分:1)
这里可能发生的是已成功编译的类文件已存在。当Java编译器运行时,如果成功编译源文件,它将生成.class
文件,但不会删除后续编译失败。
答案 1 :(得分:1)
您假设编译器会清除您的旧类文件 - 它没有。
检查当前.class文件的修改日期 - 您会发现它比您的编辑时间更早。这是因为它是从工作代码生成的,而不是从您当前的源文件生成的。如果删除此类文件,然后尝试重新编译,您将看到未创建新的类文件。
答案 2 :(得分:0)
您正在运行的类文件来自之前的编译。再次编译程序并查看以前修改类文件的时间。