The trouble is that "cancer" is not one disease, but many different ones, with many causes. A few are caused by viruses like the Human Papilloma cancer, and a vaccine has been developed for that. But the root cause of most cancers is still unknown, or only guessed at, despite much research. Some are environmental, some genetic, but many are still a mystery.