Let's face it, we all know someone like this, someone who seems to find something wrong with everyone around you and often questions why you even bother with "your friends"… sometimes they might even criticize you.
Why do they do that? Some of these critics are really very nice and intelligent people so is it really their own low self-esteem that makes them this way as was suggested by a few mental health reporters. How do you deal with their constant barrage of insults and complaints?
First LISTEN to what they are saying. I am not saying take it to heart, as a matter of fact you shouldn't take any of their words personally. Some of these people are actually well meaning and seeing the world only they way the want to see it — so they are trying to help, maybe even teach. This doesn't mean you should stay quiet and let their barbs land on you, but don't argue. Tell them calmly that it doesn't make you feel very good when they always criticize you and ask them if they would take the time to explain what they see. Especially if hey are professional in some field that they are referring to they might actually be helpful.
If however the individual takes this as an invitation to berate you even more, then you know they are just "happier" being miserable. And you don't have to put up with that. Tell them firmly, still not angrily, that you will not accept their insults or condemnations. There is a story about Buddha that you might even take to heart:
Buddha was well known for his ability to respond to evil with good. There was a man who knew about his reputation, and he traveled miles and miles and miles to test Buddha. When he arrived and stood before Buddha, he verbally abused him constantly; he insulted him; he challenged him; he did everything he could to offend Buddha.
If this person is simply being critical with no attempt at helping or teaching you, or if they are generally critical about everyone they speak about, be kind. Yes it sounds more like they are sensitive about their own performance, or the way they are seen be others. Without being effusive or phony, find something encouraging to say about them… admire an achievement, sincerely ask for their help on something, thank them for their suggestion. It's quite possible you might even see a change in their manner of speaking to you. Still though, if you need to, gently remind them that they may have hurt you with the way they've said something.
In the long run you might find even more of a friend than you thought you had before. And, if it doesn't work, then minimize the time you spend alone with this person. It's worth a try.