找不到符号:使用“javac”命令在 public class java 上实现的默认访问接口(在不同的 src 文件中声明)

Cannot find symbol : default access interfaces(declared in different src file) implemented on a public class java using `javac` command

这是一个非常新手的问题,但我无法从第一个源文件('F:/Java_Practice/src/listpage1/interfaceTest/InterfaceCan.java;`)在 public class 在第二个源文件中(F:/Java_Practice/src/listpage1/interfaceTest/InterfaceCan1.java;)。请阐明这一点。谢谢!

/* 源文件名listpage1.interfaceTest.InterfaceCan1.java */

package listpage1.interfaceTest;

import static java.lang.System.out;

public interface InterfaceCan1
    {
        int iCan_var = 2;
        void iCanMethod();
    }

class PackageInfo
{
    void packInfo()
    {
        out.println("This package is meant to contain all the interfaces used for testing the behavior of interfaces.");
    }
}
interface I1
{
    int i1_var = 1;
    void i1Method();
}

interface I1x extends I1
{
    int i1x_var = 10;
    void i1xMethod();
}

interface I2x extends InterfaceCan1
{
    int i2x_var = 20;
    void i3xMethod();
}

interface I3
{
    int I3 = 3;
    void i3Method();
}

//Another source file: listpage1.interfaceTest.InterfaceTest.java

package listpage1.interfaceTest;

import static java.lang.System.out;


public class InterfaceTest implements I1//This line is throwing error
{
    public void i1Method()
    {
        out.println("Inside the method InterfaceTest.i1Method()");
    }
    public static void main(String[] s)
    {
        TestInterface1 ob1 = new TestInterface1();
        out.println(ob1.i_var);
        ob1.iMethod();
        out.println(ob1.iCan_var);
        ob1.iCanMethod();
    }
}

interface I
{
    int i_var = 0;
    void iMethod();
}

class TestInterface1 implements I, InterfaceCan1, I1
{
    public void iMethod()
    {
        out.println("Inside the method TestInterface1.iMethod().");
    }

    public void iCanMethod()
    {
        out.println("Inside the method TestInterface1.iCanMethod()");
    }
    public void i1Method()
    {
        out.println("Inside the method TestInterface1.i1Method()");
    }
}

class InterfaceTest2 implements I1
{
    public void i1Method()
    {
        out.println("Inside the method TestInterface1.i1Method()");
    }
}

Compilation Error:
listpage1\interfaceTest\InterfaceTest.java:6: error: cannot find symbol
public class InterfaceTest implements I1
                                      ^
  symbol: class I1
1 error

非常感谢评论中的帮助。我终于弄明白为什么我不编译程序了。 为了在使用 -d 选项编译时检测到接口 (通过它 .class 文件被放置在不同的目录中)

例如:我使用的目录结构: F:/Java_Practice/src 这包含所有 .java 文件。我正在编译该文件夹中的所有文件,并使用以下命令将生成的 .class 文件放入 F:/Java_Practice/class 文件夹中: “F:\Java_Practice\src>javac -d F:/Java_Practice/class listpage1/interfaceTest/InterfaceTest.java”(参考有问题的代码)

该接口的 .class 和所有其他 class 被放置在另一个目录中(在本例中:'F:/Java_Practice/class')。现在需要在使用 -classpath 选项编译 .java 文件时指定该目录,如下所示:

F:\Java_Practice\src>javac -d F:/Java_Practice/class -classpath .;F:/Java_Practice/class listpage1/interfaceTest/InterfaceTest.java

有趣的是,如果您在编译时错过了 -classpath 选项,您仍然能够访问 所有 public classespublic 接口!但是,要访问 default-access classes 和接口 ,您将 必须在 javac 中包含 -classpath命令

请通过此 link 了解有关设置 class 路径的更多详细信息: http://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html