如何在同一个包中访问Java类

pio*_*otr 6 java package

我在src/com/example中有两个java文件(A.java + B.java)

A.java

package com.example;

public class A {
    public void sayHello(){
        System.out.println("Hello");
    }
}
Run Code Online (Sandbox Code Playgroud)

B.java

package com.example;

public class B{
    public static void main(String... args) {
        A a = new A();
        a.sayHello();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我cd到src以上的一个级别并输入javac -d classes src/com/example/B.java

我收到错误,说找不到符号A?

Osc*_*Ryz 5

javac不知道在哪里找到源类,你必须用-sourcepath选项指定它.

看到:

C:\example>mkdir src
C:\example>type > src/
C:\example>mkdir src\com\example
C:\example>more > src\com\example\A.java
package com.example;
public class A {
}
^C
C:\example>more > src\com\example\B.java
package com.example;
public class B {
    A a;
}
^C
C:\example>javac -d
C:\example>mkdir classes
C:\example>javac -d classes src\com\example\B.java
src\com\example\B.java:3: cannot find symbol
symbol  : class A
location: class com.example.B
        A a;
        ^
1 error
C:\example>javac -d classes -sourcepath src src\com\example\B.java
C:\example>
Run Code Online (Sandbox Code Playgroud)


Rob*_*een 1

这是因为 Java 不知道在哪里可以找到另一个文件的来源。您需要cd进入该src目录,或者src-sourcepath.