如何运行java类命令行?

时间:2014-10-15 15:09:59

标签: java cmd classpath scjp

我有以下测试问题:

  

假设:

1. package com.company.application;
2.
3. public class MainClass {
4. public static void main(String[] args) {}
5. }
     

并且{app / com / company / application目录中存在MainClass。假设CLASSPATH   环境变量设置为“。” (当前目录)。在命令中输入了两个java命令   该行将运行MainClass? (选择两项。)

     

一个。 java MainClass如果从/ apps目录运行
      B. java com.company.application.MainClass如果从/ apps目录运行
      C. java -classpath / apps com.company.application.MainClass如果从任何目录运行
      D. java -classpath。 MainClass如果从/ apps / com / company / application目录运行
      E. java -classpath / apps / com / company / application:。 MainClass如果从/ apps目录运行
      F. java com.company.application.MainClass如果从/ apps / com / company / application目录运行

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

3 个答案:

答案 0 :(得分:3)

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

<package location> + <simple name of class>

考虑到这一点,MainClass全名为com.company.application.MainClass

Java可以从包树中包含顶级目录的目录中找到此类。从示例中,根目录是/apps

apps <-- root
+ com <-- here the package starts
  + company
    + application
      - MainClass.class

所以这个根目录应该在类路径中,以便Java程序(JVM)可以访问已编译的类和应用程序的入口点。


从问题:

  

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

选项B指出:

  

B中。如果从/ apps目录

运行,则java com.company.application.MainClass

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

选项C说明:

  

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

在这种情况下,您将/apps设置为CLASSPATH,因此Java可以找到要执行的指定类。

所有其他选项均无法完成上述说明。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

一个。 java MainClass如果从/ apps目录运行[java将不会从其类路径中找到该类]

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

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

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

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

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