"Everybody just started running," said 17-year-old Megan Hennessy, who was in class when she heard loud noises. "Everyone was running and screaming down the hallway."
Television news footage showed anxious parents escorting children away from a school building, and ambulances could be seen outside.
Five students were taken to local hospitals, spokeswomen said.
One student later died, Police Chief Timothy McKenna said at a news conference. He hasn't been charged, and his name isn't being released because he is a juvenile.
Chardon, a city of about 5,100 people, is about 30 miles (50 kilometers) east of Cleveland.
-AP