带文件扩展名

时间:2015-06-14 04:55:48

标签: java javac

当我们编译java程序时,我们使用javac file.java命令,但在运行时我们使用java file

那么为什么有必要在编译时显式指定文件扩展名,而不是在运行java程序时不需要?

2 个答案:

答案 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编译器扩展名,因为它是一个文件,需要找到它。

相关问题