So, I reckoned that this had something to do with either the Remote interface not being public, or a classpath issue. I think it has turned out to be a classpath issue that I didn't really expect, but probably should have. Ultimately, it came down to where I was starting rmiregistry from, which I really did not expect. Starting it at the base of my package meant it had my package neatly present in its classpath. However, I was doing it in its parent directory. Boo. Error fixed!