When the running back skipped voluntary offseason workouts, it was reported he stayed away because he wanted a fresh start. General manager Trent Baalke rebuffed that belief, saying that James was staying home to be with his newborn child.
James eventually joined his team for offseason workouts.
Earlier this week the running back admitted that his job vexation did play a role in skipping the sessions.
"I was going to take time to be with my kid. I think that's important, and that's something I wanted to do," James said, per CSN Bay Area. "But did it (frustration) play a part? Yeah, it did."
James' feelings are understandable. He was a dynamic college runner and second-round pick in 2012, but he has just 39 total carries in two seasons and played only 28 offensive snaps last year. The 49ers also keep drafting other running backs -- Marcus Lattimore in 2013 and Carlos Hyde in 2014.
"If I said I wasn't frustrated, you know, I'd be lying to you," he said. "And I'm not going to lie."
James, however, doesn't hold it against his backfield mates, who are just trying to do their jobs.
"It's nothing against our running backs," James said. "I think Frank's the best, and I think Kendall is super-good, too. It's nothing against them. But with that being said, am I supposed to be happy just returning kicks and catching punts? No, not really.
"I'm a competitor. I want to go out and compete," he continued. "Whatever it is, catching some passes, whatever. I want to play running back, too. I feel I can do it at the highest level. That's the only thing that frustrates me."
Given the 49ers' increased depth at the position, however, it appears James is headed for another frustrating season.