为什么我们不使用带有"java"命令的.class扩展名?

ani*_*rak 7 java

为什么我们不给命令filename.class后的文件java,而不仅仅是filename

假设我们要编译test.java程序,然后运行javac test.java.没关系!

之后它将生成test.class文件,但运行我们运行的程序java test而不是java test.class.这是什么原因?

And*_*yle 20

因为您没有描述要运行的文件.你告诉Java哪个包含main方法 - 而类的名称是(在你的情况下)filename,而不是filename.class.

字节码几乎总是包含在文件系统的文件中这一事实是一个实现细节.传递给java命令的类路径告诉它在哪里查找类,然后主类参数告诉它使用哪个类.

(它的不同之处在于javac,因为该程序专门采用源文件并将它们编译为字节码.)


JB *_*zet 6

您也不会将文件名传递给java命令.您传递一个完全限定的类名.有点像com.yourcompany.yourapp.Main.然后,Java通过查看类路径中的所有目录和jar文件,找到此类名的.class文件.