我有以下目录布局: program 文件夹包含 java、class 和 pack 文件夹,我当前的位置是 program/java,其中包含 a.java 和 b.java 文件。最初 class 和 pack 不包含任何内容。
b.java
package comm.domm;
public class b
{
public void bFu()
{
System.out.println("b function");
}
}
一个.java
package com.dom;
import comm.domm.*;
class a
{
public static void main(String args[])
{
(new b()).bFu();
System.out.println("Utsab");
}
}
现在,从 program/java 发出以下命令
javac -d ../pack b.java
javac -cp ../pack -d ../class a.java
它在 pack 下创建 comm/domm 并将 b.class 放在 program/pack/comm/domm 中,并在 class 下创建 com/dom 并将 a.class 放在 program/class/com/dom 中
现在从我发布的同一个当前目录中,
java -cp ../class;../pack com.dom.a
哪个不起作用,它可以找到a.class而不是b.class(a.class需要b.class,如源代码中所述)但是在编译a.java时使用
javac -cp ../pack -d ../class a.java
它可以定位到b.class并产生a.class,那么为什么我尝试运行a.class时找不到b.class?怎么能找到?b.class 在编译期间找到但在运行时找不到,为什么?