Print path (leaf to root) with max sum in a binary tree
You should have a constructor MaxSumPath(TreeNode root).  Otherwise, there's no way for any other class to call the code.

The TreeNode(left, right, item) constructor is awkward.  Consider rearranging the TreeNode constructor arguments to TreeNode(left, item, right) or TreeNode(item, left, right).  I suggest creating a TreeNode(item) constructor as well.

Your TreeInfo could be eliminated by moving its variables into MaxSumPath itself.  I'd rename the variables to TreeNode maxLeaf and int maxSum.

In the maxSumPath() method, you call fetchMaxSumPath(root, treeInfo, root.item).  It should be fetchMaxSumPath(root, treeInfo, 0) if you don't want to double-count the root node.  (Fortunately, this bug happens not to affect the output.)

The space complexity is actually O(log n) when you take into account the stack used in recursion.  The time complexity is O(n), because you visit every node once when discovering the leaf for the path with the maximum sum, and every node again to find that leaf for printing.  You might want to use O(log n) space (which, remember, happens anyway due to the recursion stack) to keep track of the best path while discovering the best sum, which lets you avoid the second pass O(n) pass.