Sur Linux on aime utiliser le principe de bibliothèques partagées.
Si tu tapes 'ldd ton_executable' tu verras toutes les bibliothèques dont ton programme a besoin pour fonctionner.
Il est fort probable que ton programme se serve de certains chemins déclarés dans des variables d'environnement pour aller chercher ces bibliothèques. Car il y a plusieurs façon de faire fonctionner un programme qui a besoin de ces bibliothèques, notamment, si on veut en indiquer le chemin au moment de l'exécution, ça peut passer par les variables LD_LIBRARY_PATH et/ou LD_RUN_PATH. Ces variables sont-elles définies dans ton environnement habituel ?
Je pense que ton programme plante car il ne trouve pas la classe, donc puisqu'elle n'existe pas elle ne peut pas lever d'exception.
La solution serait de compiler ton programme avec des bibliothèques statiques, ou peut-être peux-tu passer certaines options au linker/compilateur pour que lors de l’exécution, le programme aille chercher ces bibliothèques dans son propre répertoire racine, dans lequel tu les auras copié.