在Java中,有没有逻辑上的原因使我不能说;java MyClass.class“的;从命令行?

在Java中,有没有逻辑上的原因使我不能说;java MyClass.class“的;从命令行?,java,command-line,main,Java,Command Line,Main,也许这个问题令人毛骨悚然,但当我从命令行编译文件时,如: javac MyClass.java 然后,我不能说 java MyClass.class 我必须打电话: java MyClass 这种表示法的动机是什么?您必须向Sun(现在的Oracle)询问开发历史,但我确实想指出,对于那些只使用Java而不是开发Java的人来说,“Java DoSomething”比“Java DoSomething.class”更容易记住和键入。您必须向Sun(现在的Oracle)询问关于开发历史,但我

也许这个问题令人毛骨悚然,但当我从命令行编译文件时,如:

javac MyClass.java
然后,我不能说

java MyClass.class
我必须打电话:

java MyClass

这种表示法的动机是什么?

您必须向Sun(现在的Oracle)询问开发历史,但我确实想指出,对于那些只使用Java而不是开发Java的人来说,“Java DoSomething”比“Java DoSomething.class”更容易记住和键入。

您必须向Sun(现在的Oracle)询问关于开发历史,但我确实想指出,对于那些只使用Java而不是开发Java的人来说,“Java DoSomething”比“Java DoSomething.class”更容易记住和键入。

没有办法运行非类的Java程序。因此,没有理由强制输入“.class”。您也可以从路径上的JAR中调用类,也可以直接调用,但它仍在实例化一个类(可能是清单中的“默认”类)。

无法运行非类的Java程序。因此,没有理由强制输入“.class”。您也可以从路径上的JAR中调用一个类,或者直接调用,但它仍然在实例化一个类(可能是清单中的“默认”类)。

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


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

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


Java解释器(jvm)需要一个带有main方法的类作为执行的入口点——它必须从某个地方开始。

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

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

因为类的名称是
MyClass
,而不是
MyClass.class
。当运行
java
时,指定类名而不是实际编译文件的路径。
要获得更深入的知识,我想Sun和Oracle必须回答:)

因为类的名称是
MyClass
,而不是
MyClass.class
。当运行
java
时,指定类名而不是实际编译文件的路径。
要获得更深入的知识,我想Sun和Oracle必须回答:)

假设您有一个名为
package
的类,您有一个名为
class
的类,在一个名为
package
的包中

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

因此,执行java
package.class
可能会导致编译器无法判定

假设您有一个名为
package
的类,在名为
package
的包中有一个名为
class
的类

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

因此,执行java
package.class
可能会导致编译器无法判定

因为您不必输入太多…类加载过程也可能在加载时自动将.class附加到名称中…@MadProgrammer-这很公平,所以它只是一个符号。我想有点武断。我认为
java ABC.java
行是发送得更频繁的部分。该类被称为
MyClass
而不是
MyClass.class
您为
.java
指定文件名的原因是它可以包含多个具有不同名称的类。另一种看待它的方式是:编译一个文件(不是文件中包含的类),并且您运行一个类(不是包含该类的文件)。就Java规范而言,没有提到
.class
扩展,甚至没有提到文件系统作为类文件的容器。
Java
命令遵循抽象的方法来命名入口点类。
Java
确实接受
作为
,这让我有点吃惊当我发现的时候。因为你不必输入太多…也有可能类加载过程在加载时自动将.class附加到名称上…@MadProgrammer-很公平,所以它只是一个符号。我猜有点随意。我认为
java ABC.java
行是更经常发送的ass被称为
MyClass
not
MyClass.class
您为
.java
指定文件名的原因是它可以包含多个具有不同名称的类。另一种方法是:编译一个文件(不是文件中包含的类),然后运行一个类(不是包含该类的文件)。就Java规范而言,没有提到
.class
扩展,甚至没有提到文件系统作为类文件的容器。
Java
命令遵循抽象的方法来命名入口点类。
Java
确实接受
作为
,这让我有点吃惊当我发现时。Java禁止
在类名中(它必须是类路径的一部分)或
用作关键字。JVM字节码允许
在名称中出现,以便它们可以像你说的那样出现。Java禁止
在类名中(它必须是类路径的一部分)或者将
class
用作关键字。JVM字节码允许
class
出现在名称中,这样它们就可以像您所说的那样出现。小技巧:您可以直接从jar文件的“默认类”运行Java程序,但这确实需要-jar o