Judge Herbert Msimang on Wednesday ruled against a prosecution request for the trial's postponement, saying the state's case had "limped from one disaster to another".
When the prosecution said that it was not ready to proceed, Msimang said he had no choice but to dismiss the indictment.
"There were clear guidelines which should have informed their decision to proceed. They ignored those guidelines at their own peril," Msimang said.
State prosecutors now have to decide whether to refile the charges with new evidence. Even before Wednesday's ruling, doubts had been growing that the state would be able secure a conviction.
Hundreds of Zuma’s supporters who had gathered outside the courthouse began cheering and dancing when the ruling was announced.
Zuma had pleaded innocent to charges that he was aware of efforts by his financial adviser Schabir Shaik to get him yearly payments of 500,000 rand ($70,000) from a French company in order to deflect corruption investigations into a large arms deal.
The allegations centered on a 52.7 billion rand ($7.1 billion) deal to buy ships, submarines, helicopters, jets and other arms in 1999.
Shaik, a close friend of Zuma, was convicted for fraud and corruption last year and sentenced to 15 years in prison.
Charges against the French company, Thint, were also thrown out by the judge in Pietermaritzburg.
Zuma, a former guerilla leader, says that the charges were part of a political conspiracy to prevent him from succeeding Mbeki when he steps down in 2009.
Zuma was acquitted of rape charges in an unrelated case earlier this year.