如何解决 Java 中的这个包错误?
Posted
技术标签:
【中文标题】如何解决 Java 中的这个包错误?【英文标题】:How do I solve this package error in Java? 【发布时间】:2022-01-21 10:06:20 【问题描述】:我想在 Java 中创建一个自定义包,我们称之为包字母表。 我有两个单独的类,A 类和 B 类。我想在包字母表中添加 A 类并将其导入 B 类。这是 A 类的代码
package alphabets;
public class A
public void printHello()
System.out.println("\n
Hello! I am from class
A\n");
这是 B 类的代码
import alphabets.*;
public class B
public static void main(String
args[])
A obj = new A();
obj.printHello();
然后我在终端中使用以下代码编译了 A 类:javac -d。 A.class 完成此操作后,我得到一个文件夹 alphabets,其中包含 A.class 文件 然后我使用以下代码编译 B 类:javac B.java
问题是在编译 B 类后出现错误无法访问 A,但是 当我将 A.java( 源文件 ) 放入Alphabets 文件夹( 仅包含 A.class 文件 ) 时,它编译成功。
我的问题是为什么我首先收到错误以及当我将 A.java 文件放在字母文件夹中时它是如何解决的。
A.class 文件和A.java 文件是否需要在同一个文件夹中。所以B类可以访问它还是有其他原因。
【问题讨论】:
你需要有一个-cp
来编译B.java,因为它使用A
并且需要知道在哪里可以找到字母。A
【参考方案1】:
您不需要将 java 文件编译成类文件。只需使用像 Eclipse 这样的 IDE 就会容易得多。
至于为什么当你把名为“A”的文件放在“alphabets”文件夹中时问题得到了修复,那是因为你导入了它们。java和class文件不需要在同一个文件夹中,因为你是不使用 IDE。
【讨论】:
感谢您的评论,但问题是我在上大学,在我们的大学里我们使用 Linux(在 Linux 中我们使用文本编辑器和终端),所以我在家里使用和我一样的可以有更好的实践。但我仍然很困惑,我们是否需要将 .class 和 .Java 文件放在同一个包文件夹中(在这种情况下 A.class 和 A.java 在字母文件夹中),如果是这样,那么如何自动完成(当我编译时A.java 该文件将放在字母文件夹或类似文件夹中) 请参阅我的其他帖子以进行澄清。【参考方案2】:不,他们没有(我刚刚编辑了之前的帖子。)我之前的意思是所有类文件都需要相对于彼此位于相同的位置,就像 java 文件一样,但是类和 java 文件不需要在同一个文件夹中。在我说相对于彼此的上一行中,我的意思是,例如,如果 A.java 在包 alphabets 中,而 B.java 在默认文件夹中(如您所见),则 A.class 将需要要在一个字母文件夹中,B.class 将需要在一个“默认”文件夹中(尽管我只会为 B.class/B.java 创建另一个包文件夹。而且这些包也需要在同一个文件夹中总体而言。
【讨论】:
以上是关于如何解决 Java 中的这个包错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何解决ADT17下Android第三方jar包NoClassDefFoundError的错误