2

我真的很好奇这个问题。

当我们使用 javac 编译 .java 文件时,即。javac JavaFileName.javaJavaFileName.class创建一个文件。但是当我们在命令提示符下使用 java 命令运行这个 java 程序时,我们会写java JavaFileName.

java我的问题是当我们通过命令提示符运行 java 程序时,哪个文件被传递给命令?

如果它使用.class file那么为什么它会给出错误java JavaFileName.class

4

4 回答 4

4

这不是您提名的文件。相反,您正在提名一个class,Java 将使用 中的条目classpath来查找它。

classpath将包含目录或 .jar/.zip,Java 将按顺序搜索这些。

显然,对于目录,指定的类和文件之间存在映射。这也适用于 .jar/.zip。Java 将寻找相应的条目。

例如

   java a.b.c.D

将导致搜索文件或 .jar 条目a/b/c/D.class

于 2012-08-22T09:55:54.267 回答
1

它是 .class 被执行的,你只是不按字面意思写。

于 2012-08-22T09:54:37.980 回答
0

它不是在命令行参数中传递给 java 的文件引用。它是完全限定的类名(即 org.exemple.MyClass)。Java 将查看类路径中匹配的 .class 文件并调用 main() 方法(如果存在)。

于 2012-08-22T10:00:11.233 回答
0

它执行.class文件。
当你写

java MyClass

它将在执行命令的文件夹中搜索MyClass.class文件,因此当您编写时:

java my.package.MyClass

它将在子文件夹./my/package/MyClass.class中搜索文件,最后当您编写时:

java MyClass.class

it will search for the file ./MyClass/class.class

That's why you get the error.

于 2012-08-22T12:29:53.987 回答