Heroes can be complex, though. The problem is that too many don't write them as human beings. Also, people confuse morality with upholding the law, which history shows isn't the case. (Also, the RPG moral alignments show one can be lawful and neutral or even evil, but I digress.) Heroes are good human beings (lawful or neutral good, doesn't matter), but nevertheless human. That's the challenge. Too many times, people write heroes as unwaveringly perfect and bland, when there is no basis for that in reality.
And all the good heroic journeys start out with the heroes being not exactly the nicest of people. Luke Skywalker started off as whiny and immature - and that was intentional.
As I've heard said, saints aren't perfect. Just recovering sinners.
The important thing is to make a hero likeable, and you won't find that in some rigid, one note character.