This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
The original error message did have a critical clue, that you omitted from your post:
Person is not abstract and does not override abstract method compareTo(java.lang.Object) in java.lang.Comparable
You stopped at "compareTo" and overlooked the method argument: Object. Your implementation was for compareTo(Person), not compareTo(Object). That's the clue that led to Punit's answer above. You either need to tell the compiler that a Person is comparable to other Person, not objects - or you have to write a compareTo that can handle any Object, not just a Person.