Barnes épouse Charlotte Adams Sanford, en 1832, (la sœur de John F. A. Sanford)[2]. Après la naissance de son deuxième fils, John Sanford Barnes, il démissionne le , pour devenir un ingénieur civil ferroviaire[1] et en 1839, il fut surintendant de la Western Railroad, un poste qu'il occupe pendant 22 ans.
Guerre de Sécession
Le , Barnes est nommé colonel du 18th Massachusetts[1]. Lui et son régiment rejoignent l'armée du Potomac au cours de la campagne de la Péninsule, mais ne participent pas aux combats. Pendant la bataille des Sept jours, le 18th Massachusetts est de garde à l'arrière, et de nouveau Barnes ne combat pas. Son commandant de brigade, le brigadier généralJohn Martindale, est relevé de son commandement après la bataille de Malvern Hill et Barnes devient le nouveau commandant de la 1st brigade de la 1st division du V corps le [1]. Pour des raisons non enregistrées, Barnes n'est pas présent avec sa brigade, à la seconde bataille de Bull Run et bien que le V corps marche à la bataille d'Antietam, il est laissé en réserve, et une fois de plus ne voit aucune action. Toutefois, au cours de la retraite de Lee vers la Virginie, Barnes participe à son premier combat lorsque sa brigade est attaquée par l'arrière-garde de l'armée confédérée, aboutissant à plus de 200 hommes tués ou noyés dans le fleuve Potomac et à plus de 100 hommes capturés.
Lors de la bataille de Fredericksburg , en décembre, Barnes se distingue pour la première fois, en conduisant sa brigade dans l'un des derniers assauts contre les positions confédérés sur Marye's Heights. Son commandant de division écrit après la bataille, « James Barnes ... est en droit d'être spécialement mentionné pour son sang-froid, son énergie, et son aptitude marquée[3] ». Le , Barnes est promu au brigadier généraldes volontaires, avec une date de prise de rang au [4]. Lors de la bataille de Chancellorsville , en mai, la brigade de Barnes n'est pas été très engagée. Tard dans la bataille, son commandant de division, le brigadier général Charles Griffin, tombe malade et Barnes assume le commandement de la 1st division le [1].
En 1863, la division de Barnes campe à Union Mills, Maryland, en route vers la Pennsylvanie, où la bataille de Gettysburg, allait devenir l'action la plus importante dans sa carrière. Le nouveau commandant de division, maintenant âgé de 61 ans (plus que tout autre général de l'Union, à l'exception du brigadier général George S. Greene), arrive tôt dans la matinée de la deuxième journée, le , avec le reste du V corps. Au cours de l'assaut massif des confédérés sur le flanc gauche de l'Union dans l'après-midi, l'une des brigades de Barnes, sous les ordres du colonel Strong Vincent, est détournée pour défendre le flanc à Little Round Top. La brigade combat magnifiquement, mais Barnes n'a absolument rien à voir avec ces actions, ou avec la décision de l'envoyer.
Barnes s'implique personnellement avec ses deux autres brigades, qui sont envoyées pour renforcer la ligne de l'Union dans le champ de blé, et ici, sa carrière prend une pente descendante. Il est critiqué après la bataille pour le retrait de ses deux brigades sous les ordres des colonels Jacob B. Sweitzer et William S. Tilton à 300 mètres en arrière du champ de blé sans autorisation, en dépit des protestations des généraux sur ses flancs. Lorsque les renforts du II corps arrive, le major général David B. Birney donne des ordres pour que hommes de Barnes se couchent pendant que la brigade du brigadier général Samuel K. Zook marche sur eux. La brigade de Sweitzer est envoyée dans le champ de blé, où elle est attaquée par le flanc par une autre charge confédéré dirigée par le brigadier général William T. Wofford. Les aides ne peuvent pas trouver Barnes dans le voisinage de ses troupes. Plus tard dans la journée, Barnes est blessé à la jambe et bien qu'il guérisse, il ne revient plus jamais à un service de campagne.
Après avoir recouvré de sa blessure, Barnes passe le reste de la guerre en service de garnison, en Virginie et dans le Maryland. Cela inclus le commandant du district de St. Mary, dans le Maryland, qui contient un camp de prisonniers de guerre à Point Lookout, dans le Maryland, dans le département du milieu. Il quitte le service des volontaires le [1]. Le , le président Andrew Johnson nomme le brigadier général Barnes pour l'obtention d'un brevet honoraire de major général des volontaires, et le le Sénat des États-Unis le confirme, avec une date de prise de rang au [5].
Après la guerre
Après la guerre, Barnes retourne à sa profession de ingénieur ferroviaire et est membre de la commission gouvernementale qui supervise la construction de l'Union Pacific Railroad. Barnes meurt à Springfield, dans le Massachusetts, et est enterré dans le cimetière de Springfield[1].