Java 为什么同一个包的一个类可以';你不能访问另一个吗? 包MyPack; 阶级平衡 { 字符串名; 保护双平衡; 天平(n串,双b串) { name=n; bal=b; } 无效显示() { 如果(bal

Java 为什么同一个包的一个类可以';你不能访问另一个吗? 包MyPack; 阶级平衡 { 字符串名; 保护双平衡; 天平(n串,双b串) { name=n; bal=b; } 无效显示() { 如果(bal,java,package,Java,Package,假设您使用javac,原因是您一个接一个地编译它们(首先Balance然后AccountBalance)并且您不在MyPack的父文件夹中。如果您确实在这样做,请使用javac的-cp选项指向已编译的余额。类。例如: package MyPack; class AccountBalance { public static void main(String[] args) { Balance current[]=new Balance[3]; cur

假设您使用
javac
,原因是您一个接一个地编译它们(首先
Balance
然后
AccountBalance
)并且您不在
MyPack
的父文件夹中。如果您确实在这样做,请使用
javac
-cp
选项指向已编译的
余额。类
。例如:

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();
    }
}
或者同时计算它们,例如:

..\so\src\MyPack>javac Balance.java

..\so\src\MyPack>javac -cp ../. AccountBalance.java

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

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

如果既没有指定
CLASSPATH
-cp
也没有指定
-CLASSPATH
,则用户类 路径由当前目录组成

比如说,如果你做了

..\so\src\MyPack>javac *.java
然后,
Balance
类将不在类路径中,编译器将给出您看到的错误

在这种情况下,您需要为类路径指定一个显式位置

E:/> javac programs/MyPack/AccountBalance.java 
由于
Balance
位于
/E/programs
根目录下的包
MyPack
中,因此编译器可以找到它并使用它



使用IDE。

@DaaaahWhoosh如何编译它们?向我们展示您的
javac
命令。@SotiriosDelimanolis-您提供了一个同意的链接him@brso05-如果它们位于同一位置,则不需要导入。从我的角度来看,它已正确编译。我已正确复制了您的代码。没有。如果编译器使用正确,则可以编译他也可以使用
-sourcepath
选项,或者最好是在发出命令之前将自己放入正确的工作目录,也就是说包含
MyPack
目录的目录。如果您在
E:/programs/MyPack
中,您还应该指定cp…
E:/programs
可以。您必须使用:javac Balance从E:/programs/MyPack编译Balance.java。现在,您可以使用:javac-cp E:/programs AccountBalance.java或javac-classpath E:/programs AccountBalance.java从E:/programs/MyPack/AccountBalance.java从E:/programs/MyPack编译Balance.java如果您是从E:/programs编译的,那么就使用javac E:/programs/MyPack/AccountBalance.java否其他的东西可以工作。@abhi编译它的来源并不重要。重要的是类路径是正确的,并且包含所需的类。
E:/> javac programs/MyPack/AccountBalance.java 
E:/> javac -cp programs programs/MyPack/AccountBalance.java