我有以下目录布局: 程序文件夹包含java,class和pack文件夹,我当前的位置是program / java,其中包含a.java和b.java文件。最初类和包不包含任何内容。
b.java
package comm.domm;
public class b
{
public void bFu()
{
System.out.println("b function");
}
}
a.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中 并在类下创建com / dom并将a.class放在program / class / com / dom
中现在来自我发布的同一当前目录,
java -cp ../class;../pack com.dom.a
哪个不起作用,它可以找到a.class而不是b.class(a.class需要b.class,如源代码中所述),但这次使用
编译a.javajavac -cp ../pack -d ../class a.java
它可以找到b.class并生成a.class,那么为什么当我尝试运行a.class时找不到b.class?如何找到它? b.class是在编译期间找到的,但不是在运行时,为什么??
答案 0 :(得分:1)
除非这是一个错字
javac -cp ../pack -d ../class b.java
您根本没有编译a.java
。如果你有
javac -cp ../pack -d ../class a.java
相反,然后它为我工作并打印
b function
Utsab
正如所料。
答案 1 :(得分:0)
我的逻辑是正确的,这是环境的一个问题,在改变了环境之后它工作得很好,没有任何改变....谢谢所有