执行java编译类命令行
我有以下问题。给定一个正确编译的类,其源代码为:执行java编译类命令行,java,command-line,cp,scjp,Java,Command Line,Cp,Scjp,我有以下问题。给定一个正确编译的类,其源代码为: 1. package com.sun.sjcp; 2. 3. public class Commander { 4. public static void main(String[] args) { 5. // more code here 6. } 7. } 假设类文件位于/foo/com/sun/sjcp/,当前目录为/foo/,并且类路径包含“.”(当前目录)。哪个命令行正确运行Commander A. j
1. package com.sun.sjcp;
2.
3. public class Commander {
4. public static void main(String[] args) {
5. // more code here
6. }
7. }
假设类文件位于/foo/com/sun/sjcp/
,当前目录为/foo/
,并且类路径包含“.”(当前目录)。哪个命令行正确运行Commander
A. java Commander
B. java com.sun.sjcp.Commander
C. java com/sun/sjcp/Commander
D. java -cp com.sun.sjcp Commander
E. java -cp com/sun/sjcp Commander
答:B
我们在根目录中,因此无法从中查看文件
/foo/com/sun/sjcp/directly
是正确的
C.我认为也是正确的???
D.我们在/foo/com/sun/sjcp/中,只有类文件
包com.sun.sjcp;所以编译器找不到它。
如果文件没有包声明,并且是在此目录中生成的
那么,如果我们尝试以这种方式运行它,它将起作用
E.与D相同-不起作用
给出的唯一答案是B。我哪里出错了?C不正确,因为“com/sun/sjcp/Commander”不是有效的类名。文件路径和类名是不同的
(已编辑):看起来“jvm允许您在要运行的类的完全限定名称中使用正斜杠代替点”(但您只能使用正斜杠)。因此,C似乎也是正确的类名上永远不能有正斜杠(它与文件系统路径的概念不同),这就是为什么B是唯一正确的答案。我尝试从foo执行java com/sun/sjcp/Commander,它能工作吗?在scjp中,我有Commander.class文件。我是confused@Xelian,你说得对,我得到了和你一样的结果。似乎C也是正确的。“jvm允许您在要运行的类的完全限定名称中使用正斜杠代替点”-我在Internet上只找到了这一技巧。