Vous utilisez un point-virgule comme séparateur de chemin de classe - cela ne fonctionnera pas sous Linux. Essayez de remplacer ";" avec ":" dans le chemin de classe et cela devrait fonctionner.
Modifier : explication de ce qui se passe ici. Sous Linux, ";" est le séparateur de commandes. Votre ligne de
java -cp /home/JohnF/postgresql-9.2-1000.jdbc4.jar;/home/JohnF QueryDB
est vraiment étendu en 2 exécutés un par un :
java -cp /home/JohnF/postgresql-9.2-1000.jdbc4.jar
/home/JohnF QueryDB
Le premier ne fait rien et quitte avec succès. Le second essaie d'invoquer /home/JohnF
comme exécutable, et ce n'est vraiment pas un exécutable, mais un répertoire !