gpt4 book ai didi

java - 为什么一类相同的包不能访问另一类?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:48 27 4
gpt4 key购买 nike

package MyPack;
class Balance
{
String name;
protected double bal;
Balance(String n, double b)
{
name=n;
bal=b;
}
void show()
{
if(bal<0)
System.out.print("--> ");
System.out.println(name+": $" +bal);
}
}

类:账户余额

package MyPack;
class AccountBalance
{
public static void main(String[] args)
{
Balance current[]=new Balance[3];
current[0]=new Balance("K. J. Fielding", 123.23);
current[1]=new Balance("will Tell", 157.02);
current[2]=new Balance("Tom Jackson", -12.33);
for(int i=0; i<3; i++) current[i].show();
}
}

我已将这两个类放在 Balance.java 和 AccountBalance.java 中。这两个文件都在 E:/programs/MyPack 中。 Balance.java 编译没有错误但是当我编译 AccountBalance.java 时出现错误:找不到符号“Balance”。

当两个类都声明在同一个包中时,我无法弄清楚为什么?

我正在使用 MyPack 编译javac Balance.javajavac AccountBalance.java

最佳答案

假设您从 E:/programs 以外的某个文件夹发出您的 javac 命令,您需要指定一个 -cp 选项包括包含您的 Balance 类的位置。

这是因为javac如果未指定选项,则使用当前目录

If neither CLASSPATH, -cp nor -classpath is specified, the user class path consists of the current directory.

所以如果你这样做了,例如,

E:/> javac programs/MyPack/AccountBalance.java 

然后 Balance 类将不在类路径中,编译器将给出您看到的错误。

在这种情况下,您需要为您的类路径指定一个明确的位置。例如

E:/> javac -cp programs programs/MyPack/AccountBalance.java 

由于 Balance 位于 /E/programs 的根目录下的 MyPack 包中,编译器会找到它并可以使用它。


使用 IDE。

关于java - 为什么一类相同的包不能访问另一类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28097533/

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