and a method of resource collection to get material to reprint itself.
That would probably be the hardest part. How do you take a rocket and have it be able to collect resources while on the move? Microscopic space dust probably wouldn't be enough because it would be a mixture of random stuff. Anywhere with larger debris would likely destroy the thing immediately, and it can't just land on a planet to take a break and build because there's no guarantee it'd get fuel again to achieve escape velocity.
Maybe it could cling to an asteroid for a while, but even then there's no guarantee that it would have the correct composition of materials needed to produce a copy. Not to mention just the difficulty of having to set up some sort of inbuilt foundry system that can make workable components out of raw materials without knowing what conditions you will even have.
On top of all that, you run into a potential issue similar to compression algorithms. If it can't perfectly reproduce itself, it will end up with copies that are less and less capable of producing adequate copies themselves.