如何编译位于不同包中的依赖.java文件

时间:2015-05-31 08:49:19

标签: java import package

我有一个名为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并显示与上面相同的错误

时,仍然无法正常工作

1 个答案:

答案 0 :(得分:2)

你没有充分的理由让事情变得过于复杂。使用以下步骤,你应该很好。

  1. 导航至H:\Java\WAP 4\pack\p1目录。
  2. javac sum.java
  3. 导航至H:\Java\WAP 4\目录。
  4. javac pack\p2\wap8.java
  5. 就是这样。无需明确设置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目录运行代码