In Old Spanish, words like "caja", "bajo", and "jarabe" were originally spelled with an "x", and pronounced as "sh" (voiceless palato-alveolar sibilant).
In the 1815 the spellings were officially changed from an "x" to a "j" by the RAE, including words like "Méjico" and "Tejas". By this time, the "j" was pronounced the same as "x" (previously it was pronounced like a French "j" (voiced palato-alveolar sibilant)). Over time, some words (like "Méjico", "Tejas", "Oajaca", and "Javier") reverted back to the "x" spelling, but retained their "j" pronunciation. And the letter "j" took on the "h" pronunciation that we know today.
Here is an excellent article on the subject
En la antigua Castilla, palabras como «caja», «bajo» y «jaraba» se escribían originalmente con una «x» y se pronunciaban como «sh» (fricativa postalveolar sorda).
Entre mediados y finales del siglo XVIII, la grafía cambió de la «x» a la «j», incluyendo palabras como «Méjico» y «Tejas». Durante esa época, la «j» se pronunciaba en realidad igual que la «x». Con el tiempo, algunas palabras (como «Méjico», «Tejas», «Oajaca» y «Javier») revertieron a su escritura con «x», pero conservaron su pronunciación con «j». Y luego la letra «j» adquirió la pronunciación «h» que conocemos hoy.