【问题标题】:How do I solve this package error in Java?如何解决 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

标签: java class oop package


【解决方案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 创建另一个包文件夹。而且这些包也需要在同一个文件夹中总体而言。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多