/ / pakiety java: nie można znaleźć symbolu - java, pakiety

pakiety java: nie można znaleźć symbolu - java, packages

Mam dziwny błąd. Mam 2 klasy w tym samym pakiecie, ale nie mogą się znaleźć. Z tego, co pamiętam, tak długo, jak klasy są w tym samym pakiecie, powinny być w stanie wywoływać metody wzajemnie.

Mój kod wygląda podobnie do tego:

w A.java:

package com.mypackage;
public class A{
public static int read(){
//some code
}
}

w B.java:

package com.mypackage;
public class B{
public static void main(String args[]){
int x = A.read();
}
}

i to daje mi cannot find symbol variable A błąd.

Obie te klasy zależą od niektórych .jar pliki, ale już uwzględniłem ścieżkę tych słoików CLASSPATH i A.java dobrze skompilowany, ale B nie może znaleźć A z pewnych powodów ...

Kiedy usuwam package com.mypackage; w obu klasach kompilują się dobrze.

Odpowiedzi:

4 dla odpowiedzi № 1

Odkąd kompilujesz pliki Java, które są w odrębnych pakietach, będziesz musiał upewnić się, że kompilują się do odpowiednich katalogów.

Możesz użyć tego wywołania, aby to zrobić. Zastąpić $SRC z lokalizacją plików źródłowych i możesz pozwolić $BIN być bieżącym katalogiem lub inną lokalizacją na komputerze.

javac -sourcepath $SRC -d $BIN A.java B.java

Gdy chcesz je uruchomić, musisz ponownie dodać je ręcznie do ścieżki klasy (ale to nie jest takie złe).

java -cp $BIN com.mypackage.B

To wywołanie powinno działać; po prostu upewniłem się, że na moim pulpicie znajdują się A.java i B.java. Z -d flag, które zapewniły, że podczas kompilacji przeszli do odpowiedniego schematu folderów pakietów.


3 dla odpowiedzi № 2

Powinno być:

A.java

package com.mypackage;
class A {
public static int read(){
//some code
}
}

B.java

package com.mypackage;
class B {
public static void main(String args[]){
int x = A.read();
}
}