如何编译位于不同包中的依赖 .java 文件
How to compile dependent .java files located in different packages
我有一个名为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);
}
}
这是我在命令提示符下的执行流程。
首先,我通过执行
创建 sum.java 的 class 文件
H:\Java\WAP 4\pack\p1>javac sum.java
然后我将求和的class路径设置为
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 不存在
导入包。p1.sum;
^
wap8.java:10: 错误: 找不到符号
sum.Display_Sum(a,b);
^
符号:变量总和
位置:class wap8
2 个错误
我什至尝试在环境变量中设置 class 路径变量 变量名 作为 CLASSPATH和可变值为H:\Java\WAP4\pack;.当我执行 javac wap8.java 并显示与上面相同的错误时仍然不工作
你无缘无故地把事情复杂化了。使用以下步骤,您应该会很好。
- 导航到
H:\Java\WAP 4\pack\p1
目录。
javac sum.java
- 导航到
H:\Java\WAP 4\
目录。
javac pack\p2\wap8.java
就是这样。无需明确设置 CLASSPATH
。您必须从 WAP 4
文件夹编译 wap8
的原因是因为 class 中的包语句将其绑定到完全限定名称。因此 sum1
的 FQN 为 pack.p1.sum
,而 wap8
的 FQN 为 pack.p2.wap8
。因此,当您在 pack\p2
文件夹中时,javac
将看不到 pack.p1.sum
。
您可以使用 java pack.p2.wap8
运行 来自 H:\Java\WAP 4
目录的代码
我有一个名为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);
}
}
这是我在命令提示符下的执行流程。 首先,我通过执行
创建 sum.java 的 class 文件H:\Java\WAP 4\pack\p1>javac sum.java
然后我将求和的class路径设置为
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 不存在
导入包。p1.sum;
^
wap8.java:10: 错误: 找不到符号
sum.Display_Sum(a,b);
^
符号:变量总和
位置:class wap8
2 个错误
我什至尝试在环境变量中设置 class 路径变量 变量名 作为 CLASSPATH和可变值为H:\Java\WAP4\pack;.当我执行 javac wap8.java 并显示与上面相同的错误时仍然不工作
你无缘无故地把事情复杂化了。使用以下步骤,您应该会很好。
- 导航到
H:\Java\WAP 4\pack\p1
目录。 javac sum.java
- 导航到
H:\Java\WAP 4\
目录。 javac pack\p2\wap8.java
就是这样。无需明确设置 CLASSPATH
。您必须从 WAP 4
文件夹编译 wap8
的原因是因为 class 中的包语句将其绑定到完全限定名称。因此 sum1
的 FQN 为 pack.p1.sum
,而 wap8
的 FQN 为 pack.p2.wap8
。因此,当您在 pack\p2
文件夹中时,javac
将看不到 pack.p1.sum
。
您可以使用 java pack.p2.wap8
H:\Java\WAP 4
目录的代码