Java 无法访问另一个包中的公共类

Java 无法访问另一个包中的公共类,java,eclipse,Java,Eclipse,我以前只有一个默认的包来做我的课程作业。现在我正在学习JUnit测试,所以我创建了另一个名为test的包。但是,我无法访问另一个包中名为QuickSort的公共类 下面是项目的结构和出现问题的代码行 代码: 尝试为类添加导入: 导入快速排序; 如果您将鼠标悬停在Eclipse中带有红色下划线的类名上,Eclipse将显示一个选项,用于自动为您添加导入。不要这样做。除非绝对必要,否则不要使用默认软件包。您希望使用两个项目;一个包含生产代码;另一个包含测试代码;两者都使用相同的目录布局: 实码项目

我以前只有一个默认的包来做我的课程作业。现在我正在学习JUnit测试,所以我创建了另一个名为test的包。但是,我无法访问另一个包中名为QuickSort的公共类

下面是项目的结构和出现问题的代码行

代码:


尝试为类添加导入:

导入快速排序; 如果您将鼠标悬停在Eclipse中带有红色下划线的类名上,Eclipse将显示一个选项,用于自动为您添加导入。

不要这样做。除非绝对必要,否则不要使用默认软件包。您希望使用两个项目;一个包含生产代码;另一个包含测试代码;两者都使用相同的目录布局:

实码项目: src/some/package

测试项目: src/some/package


您将要测试的代码放入第一个项目/目录;并将您的测试代码转换为第二个。然后,您必须确保测试项目的项目设置已设置,以便它可以看到其他项目。

您不能从未命名的包(如默认包)导入类。它会导致编译时错误。这就是为什么不建议使用默认包的原因;但是,如果您不熟悉使用多个包,我完全可以理解为什么会出现此错误。

还向我们展示了快速排序代码至少是类声明,通常,JUnit测试与它正在测试的类具有相同的包,但是测试代码在src/test下,主代码在src/main下,在并行文件夹层次结构中。您只需要调整IDE的构建路径以适应此情况。谢谢,我更新了我的帖子,没有导入QuickSorth的选项谁对这一胡说八道投了反对票?谁在没有证明的情况下对答案进行了投票?好吧,这在Java1.4之前是一个有效的导入语句,但当然在Java>1.4时不起作用。
package test;

import org.junit.Test;
import org.junit.Assert;

public class TestQuickSort {

    int[] numbers = new int[] { 1, 5, 3, 6, 7, 84, 2, 4, 3 };
    int[] expectedNumbers = new int[] { 1, 2, 3, 3, 4, 5, 6, 7, 84 };

    @Test
    public void test() {
        QuickSort qs = new QuickSort(numbers);
        Assert.assertEquals(expectedNumbers, qs.sort());
    }
}