如何运行java类命令行?

如何运行java类命令行?,java,cmd,classpath,scjp,Java,Cmd,Classpath,Scjp,我有以下试题: 鉴于: 1. package com.company.application; 2. 3. public class MainClass { 4. public static void main(String[] args) {} 5. } 和MainClass存在于/apps/com/company/application目录中。假设类路径 环境变量设置为“.”(当前目录)。在命令行中输入哪两个java命令 行将运行MainClass?(选择两个。) A.java MainC

我有以下试题:

鉴于:

1. package com.company.application;
2.
3. public class MainClass {
4. public static void main(String[] args) {}
5. }
MainClass
存在于/apps/com/company/application目录中。假设类路径 环境变量设置为“.”(当前目录)。在命令行中输入哪两个java命令 行将运行
MainClass
?(选择两个。)


A.java MainClass,如果从/apps目录运行
B.java com.company.application.MainClass,如果从/apps目录运行
C.java-classpath/apps com.company.application.MainClass(如果从任何目录运行)
java-classpath。MainClass,如果从/apps/com/company/application目录运行
E.java-classpath/apps/com/company/application:。MainClass,如果从/apps目录运行
如果从/apps/com/company/application目录运行,则为F.java com.company.application.MainClass


我认为正确的是D和E,但正确的是B和C,我想知道为什么?

因为MainClass是com.company.application包的一部分,必须这样运行(com.company.application.MainClass)。不能单独运行MainClass,也不能仅使用.MainClass。
要检查自己,请尝试在命令行中运行每个选项

因为MainClass是包com.company.application的一部分,并且必须以这样的方式运行(com.company.application.MainClass)。不能单独运行MainClass,也不能仅使用.MainClass。
要检查自己,请尝试在命令行中运行每个选项

应该使用全名执行类。类的全名包括:

<package location> + <simple name of class>
因此,这个根目录应该位于类路径中,以便Java程序(JVM)能够访问已编译的类和应用程序的入口点


从问题中:

假设CLASSPATH环境变量设置为“.”(当前目录)

备选案文B规定:

B.
java com.company.application.MainClass
如果从/apps目录运行

由于您位于
/apps
目录中,并且当前目录是类路径,因此Java可以找到要执行的指定类

备选案文C规定:

C.
java-classpath/apps com.company.application.MainClass
如果从任何目录运行

在本例中,您将
/apps
设置为类路径,以便Java可以找到要执行的指定类


所有其他选项都无法完成上述解释。

您应该使用全名执行类。类的全名包括:

<package location> + <simple name of class>
因此,这个根目录应该位于类路径中,以便Java程序(JVM)能够访问已编译的类和应用程序的入口点


从问题中:

假设CLASSPATH环境变量设置为“.”(当前目录)

备选案文B规定:

B.
java com.company.application.MainClass
如果从/apps目录运行

由于您位于
/apps
目录中,并且当前目录是类路径,因此Java可以找到要执行的指定类

备选案文C规定:

C.
java-classpath/apps com.company.application.MainClass
如果从任何目录运行

在本例中,您将
/apps
设置为类路径,以便Java可以找到要执行的指定类


所有其他选项都无法完成上述解释。

A.java MainClass如果从/apps目录运行[java不会从其类路径中找到该类]

B.java com.company.application.MainClass,如果从/apps目录运行[是]

C.java-classpath/apps com.company.application.MainClass(如果从任何目录运行)[yes]

java-classpath。MainClass,如果从/apps/com/company/application目录运行[执行期间应遵循包结构]

E.java-classpath/apps/com/company/application:。如果从/apps目录运行MainClass[是]


F.java com.company.application.MainClass如果从/apps/com/company/application目录运行[无需遵循结构]

A.java MainClass如果从/apps目录运行[java不会从类路径中找到类]

B.java com.company.application.MainClass,如果从/apps目录运行[是]

C.java-classpath/apps com.company.application.MainClass(如果从任何目录运行)[yes]

java-classpath。MainClass,如果从/apps/com/company/application目录运行[执行期间应遵循包结构]

E.java-classpath/apps/com/company/application:。如果从/apps目录运行MainClass[是]


F.java com.company.application.MainClass,如果从/apps/com/company/application目录运行[无需遵循结构]

将此问题/答案保存在某个位置,并使用它关闭重复项。(添加到启动器的链接。)@Luiggi但是E呢?如果当前目录是/app,并且在我们拥有的类路径上,那么为什么找不到MainClass?@Xelian,因为类的名称是
com.company.application.MainClass
。JVM将查看com/company/application并检查要执行的MainClass.class文件(这就是包的含义)。如果您只使用
java-cp/apps MainClass
,JVM将在/apps文件夹中查找MainClass.class文件,该文件不存在并且将失败。我强烈建议您手动测试每个案例,以检查java程序的行为。感谢@Luiggi,我重新阅读了[at]Sotirios链接,但我在命令行编译方面仍然存在问题。请在path系统环境变量中设置JRE路径。然后您将能够执行javac和java程序。使用此选项,在基本路径中创建应用文件夹,例如,如果是Windows,则创建C:\base\apps如果是unix linux,则创建/home/base/apps。完成此操作后,按照练习建议创建文件夹结构和java类,然后继续