Java 用包编译类
请告诉我下面目录结构中的类将如何编译 默认类路径为- /福 这是目录结构-Java 用包编译类,java,compilation,directory,packages,Java,Compilation,Directory,Packages,请告诉我下面目录结构中的类将如何编译 默认类路径为- /福 这是目录结构- foo | test | xcom |--A.class |--B.java 这是两个文件- package xcom; public class A{} package xcom; public class B extends A{} 哪个允许B.java编译 A.将当前目录设置为xcom,然后调用 javacb.java B.将
foo
|
test
|
xcom
|--A.class
|--B.java
这是两个文件-
package xcom;
public class A{}
package xcom;
public class B extends A{}
哪个允许B.java编译
A.将当前目录设置为xcom,然后调用
javacb.java
B.将当前目录设置为xcom,然后调用
javac-classpath。B.java
C.将当前目录设置为test,然后调用
javac-classpath。xcom/B.java
现在我的问题是——
为什么A和B是错误的,C是正确的 我不认为C是正确的。设置当前目录进行测试,然后调用,然后类B将编译。由于类
A
和B
属于包xcom
(请参见文件顶部的包xcom;
),java编译器希望在名为“xcom”的文件夹中找到它们它希望在类路径中找到该文件夹(实际上在sourcepath中,未指定时与类路径相同)
您可以在中找到更详细的信息
简要说明:
为什么第一个答案错了?A.将当前目录设置为xcom,然后调用:javac B.java
javac希望类路径中有一个文件夹“xcom”(当前设置为“/foo”)。但是没有这样的文件夹,所以它找不到class
B
为什么第12个答案错了?B.将当前目录设置为xcom,然后调用:javac-classpath。B.java
指定
-classpath.
将当前目录(即“xcom”)指定为类路径。javac希望类路径中有一个文件夹“xcom”(当前设置为“/foo/test/xcom”)。但是没有这样的文件夹,所以它找不到classB
为什么第三个答案正确?C.将当前目录设置为test,然后调用:javac-classpath。xcom/B.java
指定
-classpath.
将当前目录(即“test”)指定为类路径。javac希望在类路径(当前设置为“/foo/test”)中有一个文件夹“xcom”,并且它确实找到了这样一个文件夹。然后,javac希望类B的源文件位于“xcom”文件夹中,并且确实找到了它,并对其进行了编译,然后类B从此被愉快地执行。您确定C是正确的吗?C应该读取:将当前目录设置为test,然后调用,是的,它是正确的。我错误地键入了xcom。现在更正它。@asha:如果任何答案有助于您解决问题,请将其标记为“已接受”,以便将来遇到类似问题的用户能够轻松发现它。出于同样的原因,如果你自己能找到解决方案,请发布你自己的答案并将其标记为“已接受”。非常感谢你的解释。如果我把类A放在没有包的地方,而类B放在有包的地方,有没有编译的方法,像这样-类A-公共类A{}类B-包xcom;公共类B可能扩展了{},但你到底为什么要这样做呢?重点是什么?此外,不为应用程序使用软件包是一种非常糟糕的做法。