The hijacker, a man, was arrested shortly after the plane landed in Geneva at 6am CET.
He is reported to have demanded political asylum in Switzerland.
Ethiopia Airlines said in a statement that the landing was "good" and that all 200 passengers and crew on board were safe.
Swiss police said that the situation was "under control" and that "no passengers were injured".
The hijacker is believed to have boarded the plane, which left Addis Ababa at 00.30 local time, after it made a scheduled stop in the Sudan capital of Khartoum. It had been due to land in Rome at 4.40 local time.
Police officers and elite soldiers surrounded the plane after it landed, the Tribune de Genève newspaper reported.
The Boeing 767 plane was parked at a far end of a runway crowded with police and other emergency vehicles, with passengers filing out with their arms up in the air before getting onto waiting buses, according to an AFP reporter at the scene.
The Geneva airport website said all flights to and from the airport early on Monday were either diverted or cancelled.
The airport reopened at 8.45am and departures resumed shortly after 9 am.
Ethiopia said it was investigating who hijacked the flight.
"Who was behind this hijacking and who this guy is is not yet known," Ethiopia's Information Minister Redwan Hussein told AFP.
"Our ambassador there (in Geneva) is trying to search information from our passengers," he said.
The minister said officials were also trying to establish how the hijacker managed to get on the Rome-bound flight at Addis Ababa's airport.
"They have not yet had the details as to how he managed to get in the airplane and who was behind that and what actually he had at his disposal to force the airplane" to divert, he said