我有以下测试题:
Given:
1. package com.company.application; 2. 3. public class MainClass { 4. public static void main(String[] args) {} 5. }
And
MainClass
exists in the /apps/com/company/application directory. Assume the CLASSPATH environment variable is set to "." (current directory).Which two java commands entered at the command line will runMainClass
? (Choose two.)A. java MainClass if run from the /apps directory
B. java com.company.application.MainClass if run from the /apps directory
C. java -classpath /apps com.company.application.MainClass if run from any directory
D. java -classpath . MainClass if run from the /apps/com/company/application directory
E. java -classpath /apps/com/company/application:. MainClass if run from the /apps directory
F. java com.company.application.MainClass if run from the /apps/com/company/application directory
我认为正确的是 D 和 E,但正确的是 B 和 C,我想知道为什么?
最佳答案
你应该使用它的全名来执行一个类。一个类的全名包括:
<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)可以访问已编译的类和应用程序的入口点。
来自问题:
Assume the CLASSPATH environment variable is set to "." (current directory).
选项 B 指出:
B.
java com.company.application.MainClass
if run from the /apps directory
因为你在/apps
目录下,当前目录是CLASSPATH,所以Java可以找到指定的类来执行。
选项 C 指出:
C.
java -classpath /apps com.company.application.MainClass
if run from any directory
在这种情况下,您将 /apps
设置为 CLASSPATH,因此 Java 可以找到要执行的指定类。
所有其他选项都无法完成上述解释。
关于java - 如何运行java类命令行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26385957/