javac: Compilare un file .java che utilizza altre classi in esso

Ho 3 file java

a.java b.java c.java 

Sono riuscito a generare file .class sia per a che b usando

 javac example/a.java javac example/b.java 

ma quando faccio lo stesso per c.java ottengo l’errore error: non riesco a trovare i simboli b e c

Qualche suggerimento su come potrei risolvere questo problema?

Tutti i file java si trovano nella stessa cartella

Devi avere le classi a e b nel tuo classpath quando provi a compilare la class c . Ciò consente al compilatore di verificare che esistano, capire quali metodi hanno, ecc.

javac è piuttosto sensibile ai nomi dei pacchetti e ai percorsi di class. La cosa più semplice da fare è compilare tutti e tre allo stesso tempo, come ad javac example/a.java example/b.java example/c.java .

Se vai nella directory padre dell’esempio (chiamiamolo src ), puoi eseguire quanto segue:

 javac -cp src src/example/c.java 

La ragione per cui devi farlo in questo modo è perché le tue classi hanno i loro pacchetti elencati come example . A causa del nome del pacchetto, javac sta cercando la directory di example nel suo classpath, dove si aspetta di trovare a.class e b.class .

Presumibilmente tu non sei nella directory example/ quando esegui javac . Provare

 javac -cp example c.java 

O semplicemente cd in quella directory. Il classpath non viene automaticamente risolto per le classi c.java dipendono da c.java .