Холланд начал карьеру в команде «Ньюкасл Юнайтед Джетс». 14 октября 2007 года в матче против «Веллингтон Феникс» он дебютировал в А-Лиге[5]. В этом же поединке он забил свой первый гол за «Джетс», став самым молодым автором гола в чемпионате Австралии. Тогда же Джеймс подписал с командой контракт на два года. В 2008 году он помог клубу выиграть А-Лигу.
В начале 2009 года Холланд перешёл в нидерландскийАЗ. Сумма трансфера составила 650 тыс. долларов. Из-за высокой конкуренции Джеймс не смог дебютировать за новую команду и в 2011 году на правах аренды перешёл в роттердамскую «Спарту». 28 января в матче против «Розендала» он дебютировал в первом дивизионе чемпионата Нидерландов[6]. В этом же поединке он забил свой первый гол.
В январе 2012 года Холланд перешёл в австрийскую «Аустрию», заключив соглашение на 1,5 года. 11 февраля в матче против «Рида» он дебютировал в австрийской Бундеслиге[7]. В 2013 году Джеймс помог команде выиграть чемпионат. 29 апреля 2015 года в матче Кубка Австрии против «Вольфсберга» Холланд забил свой первый гол за «Аустрию»[8].
Летом 2015 года он перешёл в немецкий «Дуйсбург»[9]. 1 августа в матче против «Бохума» Джеймс дебютировал во Второй Бундеслиге[10]. По окончании сезона Холланд вернулся на родину, подписав контракт с «Аделаида Юнайтед»[11]. 9 октября 2016 года в матче против своего бывшего клуба «Ньюкасл Юнайтед Джетс» он дебютировал за новую команду[12].