gpt4 book ai didi

java - 当我们已经设置 -classpath 来定位该文件时,类名必须是完全限定的吗?

转载 作者:行者123 更新时间:2023-11-29 04:39:20 25 4
gpt4 key购买 nike

示例:

我有一个类叫做 ProgA

package test;
public class ProgA
{
public static void main(String[] args)
{
ProgB pb = new ProgB();
pb.callMe();
}
}

现在我有如下的 ProgB:

package test2;
public class ProgB
{
public void callMe()
{
System.out.println("inside callme");
}
}

编译ProgB.java 后在test2 包中生成了它的class 文件。现在,当我尝试使用此命令编译 ProgA.java 时:

javac -cp C:\Users\MyName\Desktop\test2 ProgA.java

我收到无法找到 ProgB 的错误。我的问题是为什么 java 不能查看类路径以找到 ProgB.class 文件并成功编译我的 ProgA.java?当我在 ProgA.java 代码中指定 ProgB 的完全限定类名并在类路径设置为 -classpath C:\Users\MyName\Desktop 的情况下运行时,代码工作正常。当我已经指定了完整的类路径来查找 ProgB 时,为什么还要使用完全限定的名称。我不清楚类路径和完全限定类名的概念。请解释一下。谢谢

最佳答案

首先您需要导入类。这就是为什么它要求您使用完全限定的类名。如果不导入(或使用完全限定的类名),则不能使用不在同一包中的类。

import test2.ProgB;

然后在编译时,你应该提供类路径到根位置,编译器将使用包名称作为路径查找类。

你的编译命令应该是。

javac -cp C:\Users\MyName\Desktop ProgA.java

关于java - 当我们已经设置 -classpath 来定位该文件时,类名必须是完全限定的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39923647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com