在 Java 中,我不能从命令行说"java MyClass.class "有什么合乎逻辑的原因吗?



也许这个问题可能是将头发拆分,但是当我从命令行编译文件时,例如:

javac MyClass.java

然后,我无法通过说

来运行它
java MyClass.class

我必须致电:

java MyClass

该符号的动机是什么?

,因为您在类路径上运行类,例如,该类可能包含在jar中。在这种情况下,您无法使用您的语法。

Java编译器需要一个编译单元;默认情况下(至少)Java源文件,其中整个类别及其依赖项中定义了整个类。

Java解释器(JVM)需要一个单个类,其中一个主要方法作为执行的入口 - 它必须从某个地方开始。

您必须向Sun(现在是Oracle)询问开发历史,但我确实想指出,对于仅使用Java而不是开发Java的人来说,Java Dosomething"比" java dosomething.class"

更容易记住和键入

无法运行不是类的Java程序。因此,没有理由要求键入" .class"。您可能还可以从路径上的罐子中或直接调用一个类,但是它仍在实例化类(可能是清单中的"默认"类)。

,因为类的名称是 MyClass而不是 MyClass.class。并且运行java时,您指定了类名称,而不是到达实际编译文件的路径。有关更深入的知识,我猜Sun&Oracle将不得不回答:)

想象您有一个名为package的类,并且在一个名为package的软件包中有一个名为Class的类,

--CurrentFolder
    --package
         Class.class
      package.class

因此,执行Java package.class可能会导致编译器的不确定性!

最新更新