如何解决 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的错误

如何修复 laravel 中的“包:发现”错误?

在导入JAVA项目缺少JAR包,但是代码里面没有错误提示?如何解决

如何解决此问题 错误:无法解析包?

如何避免 Java 中的类和包之间的名称冲突?

如何解决java.util.zip.ZipException