我在Java中创建了一个Pair
类(类似于c ++对),但是从一个不同的java文件引用它时遇到了麻烦。我在Java文件中工作,我们在fileA
所在的目录中将其称为Pair.class.
另外,我在两个文件的顶部写了package current-directory
。
但是,当我尝试javac fileA
时,我的所有错误都是cannot find symbol
,小箭头指向我的自定义Pair
类型。
如何让java编译器在Pair.class
内看到fileA
?
感谢所有帮助
答案 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和文件夹中的外观。
在文件夹中,它们看起来像这样。
在代码中,他们有这个包。
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