Personally, I'd stick with the treats. It's what he LOVES and that's what you want to use to keep him motivated. When you take him through the weaves, slow down and hold your hand right in front of his nose and go very slowly, luring him. If he's running into them, you must be holding your hand too high or too far away from the poles. He shouldn't be running at all yet until he's got the idea of alternating the poles. So just walk through at a snails pace at first. Once he's going through slowly, methodically and getting all the weaves, stop luring with your hand in front of his nose and make your hand signal more subtle. Keep guiding him if needed for a while. By this time, he should know that he's to alternate every pole. Reward him often but stay low key. Gradually make your hand signal lighter, more subtle. Use a cue word, "go weave" or "weave" at the beginning of the exercise. And "yessss" as he's doing it right. If he misses one, stop and go back to the beginning. You can use a no reward marker, like...."nah"....no anger, but just to tell him, "nah...that wasn't it. Try this." But don't say it in a way that can discourage him at all. You want this to be nothing but fun. When he's good at this stage, you can then get a little behind him and "push" him through. Only when he's doing this well with you behind and with subtle hand signals should you start encouraging him to speed up.
Use a short piece of leash...a tab about 8" long if you need it to guide him....at first. Go through a few poles and pop him a (tiny, soft) treat before he has a chance to mess up. If he messes up, don't reward. Don't use any negative word or any type of punishment with this. Start over. Try to keep it just a tad lower key if you think he's getting too excited to slow down. You want to get the accuracy first, then later, the speed.
With the jumps...again, I think you might be trying to go too fast, maybe too high. Go along next to him and use your leash tab to guide him over. Then when he's jumping reliably and well, start getting a little behind him and "push" (herd) him from the rear. Use a marker word if you're not using a clicker. Everytime he does something right, use this word and then treat. You can prime him to this word you use by practicing with something he already knows well, like sit. Or...you can just say the word, treat, say the word, treat over and over in different places, different contexts. Anytime you use this word you must follow with a treat, even if you make a mistake and don't mean to say it. I use "yesssss!" When the dog jumps, while he's in mid air, "yessss!" and when he lands, treat. Just do one jump at first and when he gets it, add another. Start with them fairly low and guide him over.
I think your problems are probably coming from going too fast and trying to do too much at first. Break things down into parts and master the small steps first before going on. There are always parts to everything. In this stuff, there's accuracy and speed and then there are finer points yet...more bend in the body when weaving etc. Don't try to get speed before you get the accuracy down. One thing at a time.