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