Нужно разбираться с ошибками.
В общем случае один раз скомпилированный класс будет запускаться на виртуальной машине Java такой-же или более новой версии без проблем. Но, не запустится на более старой версии, о чем будет выдана соответствующая ошибка.
Окружение для запуска Java-машины для разных платформ настраивается немного по разному. Например для Unix/Linux систем разделителем элементов в переменной CLASSPATH (в этой переменной задаются пути для поиска классов и библиотек классов) является двоеточие, а для Windows - точка с запятой.
Бывают и другие нюансы, например разные кодировки по умолчанию для разных платформ, из-за чего могут неправильно считываться файлы конфигурации используемых библиотек. Про использование Native-библиотек уже все сказали.