我对这个问题很好奇。
当我们使用javac编译.java文件时。 javac JavaFileName.java
,创建了一个JavaFileName.class
文件。但是当我们在命令提示符下使用java命令运行这个java程序时,我们编写java JavaFileName
。
我的问题是当我们通过命令提示符运行java程序时,哪个文件传递给java
命令?
如果它使用.class file
,那么为什么它会在java JavaFileName.class
答案 0 :(得分:4)
这不是你提名的文件。相反,您要提名类,Java将使用classpath
中的条目来查找它。
您的classpath
将包含目录或.jar / .zips,Java将按顺序搜索这些目录。
显然,对于目录,指定的类和文件之间存在映射。这也适用于.jar / .zip。 Java将查找相应的条目。
e.g。
java a.b.c.D
将导致搜索文件或.jar条目a/b/c/D.class
答案 1 :(得分:1)
这是.class被执行,你只是不写字面。
答案 2 :(得分:0)
它不是在命令行参数中传递给java的文件引用。它是完全限定的类名(即org.exemple.MyClass)。 Java将查看类路径中匹配的.class文件,并调用main()方法(如果存在)。
答案 3 :(得分:0)
执行 .class 文件 当你写
java MyClass
它会在执行命令的文件夹中搜索文件 MyClass.class ,所以在你写的时候:
java my.package.MyClass
它将在子文件夹 ./ my / package / MyClass.class 中搜索文件,最后在你写的时候:
java MyClass.class
它将搜索文件 ./ MyClass / class.class
这就是你得到错误的原因。