当我们编译java程序时,我们使用javac file.java
命令,但在运行时我们使用java file
。
那么为什么有必要在编译时显式指定文件扩展名,而不是在运行java程序时不需要?
答案 0 :(得分:7)
那么为什么有必要在编译时显式指定文件扩展名,而不是在运行java程序时不需要?
因为这是工具实施的方式:
javac
命令需要文件路径名java
命令需要Java类名称。他们在20多年前就像这样实现了,并且对向后兼容性的需求超过了对变化 1 的需求。
没有必要以这种方式设计工具。 (他们可以用不同的方式完成它。)但是为什么他们以这种方式设计它的讨论是:
1 - 如果工具的工作方式不同,人们可能会认为初学者会更好。但是,如果新手引起注意,那么理解这些工具真的不是那么难......并且很难阅读文档和/或体面的教程和/或在课堂上倾听。
答案 1 :(得分:6)
因为当你"跑"您正在告诉Java应用程序启动器的java .class编译文件哪个类包含main方法。启动程序启动Java运行时环境并加载指定的类。
如果你写java MyClass
,那么主方法的类是MyClass
。请注意,写java MyClass.class
是错误的,因为MyClass.class
不是该类的名称。
使用javac MyClass.java
进行编译时,需要告诉java编译器扩展名,因为它是一个文件,需要找到它。