Hvorfor behøver det at være forskelligt ?
Det undertrykker jo lidt meningen med Java.
Man kunne forestille sig, at bestemte libs, som er tilgængelig på én platform ikke er tilgængelige på en anden. Funktionaliteten i det manglende lib erstattes af et andet lib, som er stort set identisk, men hvor interfacet er en smule anderledes, hvilket betyder, at visse filer er forskellige afhængig af den platform de bygges til.
ClassDefNotFound kan ikke bruges i dette tilfælde.
Det du efterlyser kan godt lade sig gøre, men om det er det rigtige tilgang til din problemstilling tvivler jeg på.
Du kunne overveje, at integere denne (platformuafhænginghed) i selve programmet ved f.eks. at have en MacFile, WinFile etc. som alle nedarver fra File. Så kan du i runtime, ved at hente den os din applikation køre, sætte den rette objekt til at udføre opgaven.
Håber, at du kan se tankegangen...