James Grant nació en Nairn, en la región escocesa de las Highlands, donde su padre era predicador. Fue educado en la escuela primaria y en la Marischal College de Aberdeen. En 1846 ingresó en el ejército indio, combatió en la Segunda guerra anglo-sij, desarrollada entre los años 1848 y 1849, y también estuvo presente durante la Rebelión de la India de 1857, siendo herido en las operaciones de repliegue sobre Lucknow.