Java 引用同一目录中的类
Posted
技术标签:
【中文标题】Java 引用同一目录中的类【英文标题】:Java referencing a class in the same directory 【发布时间】:2014-03-07 07:34:55 【问题描述】:我在 Java 中创建了一个 Pair
类(类似于 c++ 对),但无法从不同的 java 文件中引用它。我在一个 Java 文件中工作,我们在与 Pair.class.
相同的目录中称它为 fileA
此外,我在两个文件的顶部都写了package current-directory
。
但是,当我尝试 javac fileA
时,我所有的错误都是 cannot find symbol
并且小箭头指向我的自定义 Pair
类型。
如何让 java 编译器看到 Pair.class
内部的 fileA
?
感谢大家的帮助
【问题讨论】:
这里附上包结构 了解 java 打包和导入的工作原理。这可以解决您的问题。 如果你正在编译文件A,它应该通过命令'javac fileA.java'来完成,即带有.java扩展名。而运行它使用没有任何扩展名的 java fileA。 【参考方案1】: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,则不应在顶部声明包,因为它们位于“默认包”中。因此,以上应该可以工作。
使用默认包提供了一些便利,但也有一些限制,我不会详细说明,但是现在您知道了默认包,您可以查找它。我建议使用包名称,就像添加一样简单,就像你做的那样:
package kugathasan;
在每个文件的开头。如果你这样做,你应该把这两个文件放在一个名为 kugathasan 的目录中,并从包含 kugathasan 的目录中调用 javac。
【讨论】:
【参考方案2】:这是一个包结构问题。通过查看此屏幕截图,您可能会了解它们在我的 IDE 和文件夹中的外观。
在文件夹中,它们看起来像这样。
在代码中,他们有这个包。
package com.jini;
希望您了解这是如何工作的。
【讨论】:
【参考方案3】:如果它们在同一个目录中, 需要同时编译两个类;
javac fileA.java pair.java
【讨论】:
【参考方案4】:技术专家的评论是正确的。
在 Java 中,开发应用程序时通常不会直接使用 .class 文件。您使用 .java 文件。您在 IDE 中创建的包应该包含您的 .java 文件。
因此,不要将 Pair.class 放在与 fileA.java 相同的包目录中,而是将 Pair.java 放在其中。然后你应该有一个包含 fileA.java 和 Pair.java 的目录/包
【讨论】:
以上是关于Java 引用同一目录中的类的主要内容,如果未能解决你的问题,请参考以下文章
JPA Hibernate 将类中的类中的字段映射到同一个表
java里一个类中的方法的缺省属性是public or private?