Как получить доступ к классам Java в одном пакете - PullRequest
6 голосов
/ 12 мая 2011

У меня есть два файла Java (A.java + B.java) в src / com / example

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();
    }
}

Если я перехожу на один уровень выше src и набираю javac -d классы src / com / example / B.java

Я получаю сообщение о том, что не могу найти символ A?

Ответы [ 3 ]

5 голосов
/ 12 мая 2011

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>
1 голос
/ 12 мая 2011

Это потому, что Java не знает, где найти источник другого файла.Вам нужно либо cd в каталог src, либо указать каталог src в -sourcepath.

0 голосов
/ 12 мая 2011

Попробуйте javac -d классы src / com / example / *. Java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...