运行java代码,它使用其他包中的类

时间:2013-09-24 14:44:10

标签: java

我有以下目录布局: 程序文件夹包含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.java
javac -cp ../pack -d ../class a.java

它可以找到b.class并生成a.class,那么为什么当我尝试运行a.class时找不到b.class?如何找到它? b.class是在编译期间找到的,但不是在运行时,为什么??

2 个答案:

答案 0 :(得分:1)

除非这是一个错字

javac -cp ../pack -d ../class b.java

您根本没有编译a.java。如果你有

javac -cp ../pack -d ../class a.java

相反,然后它为我工作并打印

b function
Utsab

正如所料。

答案 1 :(得分:0)

我的逻辑是正确的,这是环境的一个问题,在改变了环境之后它工作得很好,没有任何改变....谢谢所有