我有一个名为pack的文件夹,里面有两个文件夹p1和p2。
在文件夹p1中,我在名为sum.java的文件中编写以下代码
package pack.p1;
public class sum{
public static void Display_Sum(int a,int b){
System.out.println("Sum = "+(a+b));
}
}
然后在文件夹p2中,我在名为wap8.java的文件中编写以下代码
package pack.p2;
import pack.p1.sum;
import java.util.Scanner;
class wap8{
public static void main(String args[]){
Scanner s=new Scanner(System.in);
System.out.println("Enter two no.s = ");
int a=s.nextInt();
int b=s.nextInt();
sum.Display_Sum(a,b);
}
}
这是我在cmd提示符下的执行流程。 首先,我通过执行
创建sum.java的类文件H:\ Java \ WAP 4 \ pack \ p1> javac sum.java
然后我将sum的类路径设置为
H:\ Java \ WAP 4 \ pack \ p1> set classpath =%classpath%; h:\ Java \ WAP 4 \ pack;
然后在cmd行中我来到文件夹p2并执行以下操作,但它显示包pack.p1不存在。为什么会这样?
H:\ Java \ WAP 4 \ pack \ p2> javac wap8.java
wap8.java:2:错误:包pack.p1不存在
import pack.p1.sum;
^
wap8.java:10:错误:找不到符号
sum.Display_Sum(A,B);
^
符号:变量总和
位置:类wap8
2个错误
我甚至尝试将 变量名 的环境变量中的classpath vairable设置为 CLASSPATH 和 变量值 as H:\ Java \ WAP 4 \ pack; 。当我执行javac wap8.java并显示与上面相同的错误
时,仍然无法正常工作答案 0 :(得分:2)
你没有充分的理由让事情变得过于复杂。使用以下步骤,你应该很好。
H:\Java\WAP 4\pack\p1
目录。javac sum.java
H:\Java\WAP 4\
目录。javac pack\p2\wap8.java
就是这样。无需明确设置CLASSPATH
。您必须从wap8
文件夹编译WAP 4
的原因是因为类中的package语句将其绑定到完全限定名称。因此sum1
的FQN为pack.p1.sum
,而wap8
的FQN为pack.p2.wap8
。因此,当您在javac
文件夹中时,pack.p1.sum
将无法看到pack\p2
。
您可以使用H:\Java\WAP 4
java pack.p2.wap8
目录运行代码