Tutti i sorgenti Java che costituiscono un programma vengono tipicamente messi insieme al di sotto di un'unica cartella radice. La struttura delle cartelle deve riflettere la struttura dei ''package'' a cui le varie classi appartengono.
La cartella principale va passata al compilatore come parte del ''classpath''. In questo modo, si informa il compilatore che, nel leggere i sorgenti, esso deve calcolare i ''package'' partendo dalla cartella indicata. In particolare, il compilatore ''javac'' fornisce l'opzione <tt>-cp</tt> o <tt>-classpath</tt>.
''Esempio''. Si supponga di avere tutti i sorgenti Java nella cartella <tt>C:\Sorgenti\App1</tt>:
<pre>
javac -cp C:\Sorgenti\App1 *.java
</pre>
oppure, se ci si è spostati da prompt dei comandi sotto la cartella <tt>C:\Sorgenti\App1</tt>,
<pre>
javac -cp . *.java
</pre>
Il classpath andrà passato anche alla macchina virtuale per l'esecuzione; però, in tal caso, si dovrà indicare la cartella radice delle directory che contengono i file <tt>.class</tt> e non la cartella radice dei sorgenti (queste due cartelle possono essere diverse tra loro).