Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access Java classes in same package

Tags:

java

package

I have two java files (A.java + B.java) in 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();
    }
}

If I cd to one level above src and type javac -d classes src/com/example/B.java

I get an error saying cannot find symbol A?

like image 982
piotr Avatar asked May 11 '11 21:05

piotr


2 Answers

javac doesn't know where to find source class you have to specify it with -sourcepath option.

See:

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>
like image 60
OscarRyz Avatar answered Oct 05 '22 08:10

OscarRyz


That's because Java doesn't know where to find the source of the other file. You need to either cd into the src directory, or specify the src directory on the -sourcepath.

like image 45
Robin Green Avatar answered Oct 05 '22 08:10

Robin Green