-cp (o l'opzione "lunga" -classpath) impostano il classpath per quel avvio di java e specificando questo di fatto la variabile CLASSPATH viene ignorata (-cp/-classpath reimposta il classpath, insomma)
No, deve funzionare anche solo con la variabile CLASSPATH. Se non funziona, qualche problema c'è (mi viene in mente: banali questioni di spazi nei path).