【问题标题】:How to access Java classes in same package如何访问同一个包中的Java类
【发布时间】:2011-08-23 16:15:46
【问题描述】:

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

A.java

package com.example;

public class A {
    public void sayHello(){
        System.out.println("Hello");
    }
}

B.java

package com.example;

public class B{
    public static void main(String... args) {
        A a = new A();
        a.sayHello();
    }
}

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

我收到一条错误消息,提示找不到符号 A?

【问题讨论】:

    标签: java package


    【解决方案1】:

    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>
    

    【讨论】:

      【解决方案2】:

      那是因为 Java 不知道在哪里可以找到其他文件的源。你需要要么cd进入src目录,要么在-sourcepath上指定src目录。

      【讨论】:

        【解决方案3】:

        试试 javac -d classes src/com/example/*.java

        【讨论】:

          猜你喜欢
          • 2016-05-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-11
          • 2013-07-18
          • 1970-01-01
          • 2022-01-15
          • 2016-07-29
          相关资源
          最近更新 更多