Java引用同一目录中的类

时间:2014-02-10 04:45:55

标签: java class import package

我在Java中创建了一个Pair类(类似于c ++对),但是从一个不同的java文件引用它时遇到了麻烦。我在Java文件中工作,我们在fileA所在的目录中将其称为Pair.class. 另外,我在两个文件的顶部写了package current-directory

但是,当我尝试javac fileA时,我的所有错误都是cannot find symbol,小箭头指向我的自定义Pair类型。

如何让java编译器在Pair.class内看到fileA

感谢所有帮助

4 个答案:

答案 0 :(得分:2)

Java受一些基本约定的驱动,包括目录结构遵循包结构,java文件以它们定义的类命名。

您应该将fileA定义为fileA.java中的类,如下所示:

public class fileA {
    public static void main(String[] args) {
        Pair p = new Pair(0, 1);
        System.out.println("a is "+p.a+" and b is "+p.b);
    }
}

和相应的Pair类:

public class Pair {
    public final int a;
    public final int b;
    public Pair(int a, int b) {
        this.a = a;
        this.b = b;
    }
}

如果从两个java文件所在的目录中调用javac,则不应在顶部声明一个包,因为它们在'default package'中。因此,上述情况应该有效。

使用默认包提供了一些便利,但也有一些限制,我不会详细说明,但现在你知道默认包,你可以查找它。我建议使用包名称,就像添加一样简单,如:

package kugathasan;

在每个文件的开头。如果你这样做,你应该将这两个文件放在一个名为kugathasan的目录中,并从包含kugathasan的目录中调用javac。

答案 1 :(得分:1)

这是一个包结构问题。您可以通过查看此屏幕截图了解它们在我的IDE和文件夹中的外观。

enter image description here

在文件夹中,它们看起来像这样。

enter image description here

在代码中,他们有这个包。

package com.jini;

希望您了解这是如何运作的。

答案 2 :(得分:0)

技术专家的评论是正确的。

在Java中,在开发应用程序时,通常不直接使用.class文件。您使用.java文件。您在IDE中创建的软件包应包含.java文件。

因此,不要将Pair.class放在与fileA.java相同的包目录中,而是将Pair.java放入其中。然后,您应该有一个包含fileA.java和Pair.java

的目录/包

答案 3 :(得分:0)

如果它们在同一目录中, 您需要在同一句子中编译两个类;

javac文件A.java pair.java